iOS RubyMotion 测试小感

ouyang · 2012年05月07日 · 最后由 badboy 回复于 2014年09月23日 · 14973 次阅读

今天刚拿到手的,还没来得及详细测试。先报告一些粗略感受。

购买

  • 支持信用卡直接购买,人民币自动报价。

安装

  • 安装时需要翻墙。
  • 官方下载的 app,仅仅是一个代码下载器,输入序列号之后,然后还是连接到官网下载。
  • 需要 sudo 权限。
  • 默认安装在/Library/RubyMotion/目录。

编译

  • 官方的测试代码放在这里:https://github.com/HipByte/RubyMotionSamples
  • 测试的时候,使用 rake 命令,很可能还是墙的问题,导致经常报错。
  • 编译流程简单,直接使用 rake 命令,然后会直接连到官网,没找到,则会有一些报错信息,但是不影响最终的 app 生成。

生成系列文件,如下:

Build ./build/iPhoneSimulator-5.1-Development Compile ./app/app_delegate.rb Compile ./app/tweet.rb Compile ./app/tweet_cell.rb Compile ./app/tweets_controller.rb Create ./build/iPhoneSimulator-5.1-Development/Tweets.app Link ./build/iPhoneSimulator-5.1-Development/Tweets.app/Tweets Create ./build/iPhoneSimulator-5.1-Development/Tweets.app/Info.plist Create ./build/iPhoneSimulator-5.1-Development/Tweets.app/PkgInfo Create ./build/iPhoneSimulator-5.1-Development/Tweets.dSYM Simulate ./build/iPhoneSimulator-5.1-Development/Tweets.app

直接调用 xcode 的 ios 模拟器,就出来了。

源代码

  • 与官网的描述一样,的确是借助于 macruby 的既有优势,做了桥接与模拟器的桥接。作者似乎只写了 ios 5.0 与 5.1 系列。

  • 本身原生 Ruby 代码量不算特别多,代码容易理解。

这是拿官方例子,生成的一个 ios 应用:

image

小结

整体来说,细节需要完善的地方还非常多,不过不失为 Ruby 社区值得琢磨的一个东西,未来开发商假设拿到 VC 投资,开源概率应该是非常大。我最关心的几个问题,目前还没找到答案或者没来得及测试:

  • 能否有原生的 object c 代码,从作者设计的机制来看,应该是没有了,未来也不会有了,目前是编译生成后缀为.rb.o 的文件;
  • Ruby 自身的 gem 如何调用;
  • 如何设计 ui,现在的 ui 是直接写在 controller 层面,无法用 xcode 参与设计。

ps:

http://merbist.com/2012/05/04/macruby-on-ios-rubymotion-review/

https://github.com/mattetti/BubbleWrap

http://joshsymonds.com/blog/2012/05/04/why-rubymotion-is-better-than-objective-c/

https://github.com/pragmaticstudio/studio-bonus-tracks/tree/master/episode-020/Magic8Ball

http://arstechnica.com/business/news/2012/05/exclusive-building-ruby-ios-applications-with-rubymotion.ars/1

真牛~ 佩服楼主的吃螃蟹精神和研究精神!

支持! :)

不错~ 一直以来就期待 motion ruby 这样的东西,不知道用他编译出来的程序能否通过 app store 审核.. 另外 Matz 的 mruby 也很值得期待~

虽说我是一个十足的 MacRuby fan,但就个人体验来讲,觉得用 RubyMotion 写 iOS 程序意义不大。几点理由:

  • MacRuby 本身跟随 iOS SDK 的速度令人担忧。一方面 iOS SDK 更新太快,二来抛开 Xcode 的开发包,与 Xcode 新添加的特性产生冲突的可能性很大。
  • 单纯 Objective-C 与 MacRuby 之间的语法桥接,没有太大的实际性。Obj-C 的方法名都很长,在 Vim 中靠记忆来写相应的 Ruby 代码比较蛋疼。
  • Apple 对第三方(MacRuby 原本可是 Apple 直接支持的!)的抛弃是随时会发生的。而且每次 OS X 或 iOS 大版本升级,会出一堆兼容问题。我写过 RubyCocoa App,后来 RubyCocoa 被抛弃,遂改用 MacRuby,结果,嗯,基本被抛弃,LIon 内置的 MacRuby.framework 竟然还是 private framework!
  • 在 Mac 上写 app,用 MacRuby 有一个好处是可以调用大量 gems(虽然崩溃的机率也很大)。iOS 上基本上是直接用官方 SDK 和第三方的 Objctive-C 库。进一步去开发第三方 gem 是可行的,但要考虑上述第 1,2 条。
  • 从 Titanium 等其他类似第三方工具的使用情况来说,不用官方 SDK 直接开发,往往会引至维护厄梦。

不过,从学习及开拓视野的角度来讲,尝试并研究一下还是很不错的。

#4 楼 @aNdReW_Qx App Store 审核是没问题的。因为它编译时是直接用 iOS SDK 的。

继续关注。

#6 楼 @ashchan 的意见太棒了。这事情归根结底,还是一个社区支持与商业模式的问题。假设社区支持,其实还是前景可期。

老阳可以看下这篇 review,作者是 MacRuby 项目的开发者,其意见有很大的参考价值 http://matt.aimonetti.net/posts/2012/05/04/macruby-on-ios-rubymotion-review/

#10 楼 @linjian815 谢谢林兄意见:D

从我们实际开发情况来看,现有 app 是基于原生的,未来也只会考虑选择 html5 的跨平台框架。

不过 RubyMotion 这类东西很可能发展速度会快于大家的想象,Ruby 社区饥渴太久:D

https://github.com/railsfactory/rubymotion-learn/blob/master/projects.md

一个哥们,在 Hacker News 上报告了详细的测试结果。

如果这个项目真的像它自己说的那样(编译成机器码,不带有太多的性能损耗),我非常看好这个项目。因为:

  • 开发效率。静态语言的开发效率和动态语言是不能比的。
  • 这个项目自己带有解释器,修改 - 编译 - 测试过程的时间会大幅度减少。我开发过 pyqt,与 C++ 比起来,开发效率提升是非常显著的。
  • 学习成本。虽然说新学一门语言的学习成本不是特别高,但是掌握编程范式的时间是需要的(并且要很久)。对于其他开发者而言,会考虑不进行该项目的投资。用 rubymotion 可以基本省掉这部分的时间,直接通过看 api 开发。

前面提到的一些平台发展本身的阻碍,我觉得 ruby 社区强力推动下能够解决。 不过技术投资总是有风险,说不定这个项目的结果如何,持续关注吧。

我去,twitter 第一个竟然是我,我要火啊

这一期的 RubyWeekly 成了 RubyMotion 专刊了:D

http://rubyweekly.com/archive/92.html

#14 楼 @hlcfan 哈哈,得请客:D

@linjunhalida 从目前社区支持情况来看,发展速度很快,github 已有 50 多个项目了:D

#16 楼 @ouyang 好吧,你要是来大连,我就请,哈哈

有人审核过了,可能是第一个完全用 Ruby 开发的,IOS 应用:

http://itunes.apple.com/us/app/mustachio/id525324802?mt=8

匿名 #19 2012年05月18日

objc 比较啰嗦,但是有 xcode 这都不是问题,ios 开发,语言不算什么问题,objc 本身很简单很灵活,ios 开发足以了,更多值得关注的点是平台 framework, 好的设计,好的编程习惯等等。。。

写的真好,开始使用

#20 楼 @xiaoniuniu 用的怎么样?谈谈感想吧。。我也在观望。。

#21 楼 @gsky 还在学。。。

哇,找到同伴了 我用 rubymotion 作的 app 地址 https://itunes.apple.com/us/app/pei-hai-zi-ting-dong-wu-jiao/id901152908?l=zh&ls=1&mt=8 现在花了将近 4 个星期,其中大部分是在整素材

回答作者的 ruby 使用自身 gem 的一个问题,http://motion-toolbox.com/ 这个是社区维护的,一个支持 rubymotion 需要的 gem 的网站,基本你做 app 需要的功能都可以从这找到。。。无非跟 rails 一样,写带 Gemfile 里,然用 bundle install,使用 gem

我很看好 rubymotion,因为它马上要支持安卓了,用 ruby 能做 web、ios、安卓。。。团队统一配置是不是很吸引人?

另外楼主能加群不,316161527 我发现开发很有趣,要解决不熟悉的问题没人问很痛苦。。。

我的 app 的二维码扫描,只支持 ios

#24 楼 @badboy 这个 app 是用 rubymotion 做的吗?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号