美文网首页iOS DeveloperiOS开发
使用 RubyMotion 构建一个完整的 iOS 交互执行环境

使用 RubyMotion 构建一个完整的 iOS 交互执行环境

作者: 王大发 | 来源:发表于2017-02-24 14:53 被阅读37次

    iOS 开发过程中,调试 UI,因为官方开发环境不足,一般都是配合 Reveal这种工具,来调试修改,后来苹果推出 Swift 的时候,引入了 Playground,Xcode 中也增加了 UIView Debug,这样一来就简化了 View 层的调试难度。然而因为两者各自有问题:

    Playground:

    • 不是在完整的应用执行环境中执行的
    • 设置 View 属性不够灵活,只能通过 Playground 中的代码来执行

    Reveal:

    • 能设置的属性有限
    • 能设置控件的属性有限

    此外这两种方式都没有交互执行代码的能力。一般解释执行的语言都带这个福利,一边调试一边写代码,效率飙升。Swift 中带一个环境,然而也不是完整的环境。


    是时候让 RubyMotion 出场了。这个项目好几年了,目标是拿 Ruby 来写移动端的项目,听起来很 Cool,然而因为各种原因,最终没发展起来,我感觉以后也够呛,有些狗注定单身,有些项目注定小众。项目的作者也是 MacRuby 的作者,有兴趣自己了解,不赘述。

    RubyMotion 的思路是用 Ruby 代码根据一定规范,去调用各个平台的接口,然后它从中间做一些兼容和转换,因为有完整的兼容层和解释器,所以拿来做 iOS 环境的解释器十分合适。


    首先来注册个免费账户:

    http://www.rubymotion.com/cn/download/starter/

    然后会给你邮箱发个 Key,和下载地址。安装的时候输入那个 Key 就能继续了。

    我曾经满心欢喜花 199 刀买了一个收费版(当时还没有免费版),一年多后才用 RubyMotion 把这个钱给挣回来……

    安装完毕后在终端下执行 motion create testApp:

    这样就创建了一个 iOS 工程。进去执行 Rake:

    然后一片空白:

    很好,执行起来了。现在你已经得到一个完整的交互式 iOS 执行环境了。

    还支持 tab 键列出方法名。

    切换到模拟器界面,然后按 cmd 键在空白的地方,会发现出现一个红线,点一下然后切换到终端:

    可以看到终端的标签变成了这个 View,你已经进入了这个 View 的内部了。调整个背景色看看:

    添加个子视图:

    这样已经能用了,然而命令还是有些繁琐,在 Ruby 社区里,大家都想法儿少写代码。我们引入 SugarCube 这个项目。在 Gemfile 中增加:

    source 'https://rubygems.org'
    
    gem 'rake'
    # Add your dependencies here:
    
    gem 'sugarcube', :require => [
      'sugarcube',
      'sugarcube-repl',
      'sugarcube-factories',
      'sugarcube-ui',
      'sugarcube-color',
      'sugarcube-foundation',
      'sugarcube-constants',
      'sugarcube-timer',
      'sugarcube-notifications',
      'sugarcube-nsuserdefaults',
      'sugarcube-gestures',
      'sugarcube-nsdata'
    ]
    
    

    这下就好写多了。

    这个项目还对 REPL 增加了各种优化,比如查找当前应用的所有 Controller,当前的视图,等便利的操作。详情参考文档

    这时这个调试环境就很具可用性了。


    我开发维护过几个 RubyMotion 的项目,并不是很推荐使用 RubyMotion 作为移动端开发,原因这个社区的老哥已经说的很清楚了:Why I stopped using RubyMotion,不过拿来当一个辅助工具使用,还是极好的。

    相关文章

      网友评论

        本文标题:使用 RubyMotion 构建一个完整的 iOS 交互执行环境

        本文链接:https://www.haomeiwen.com/subject/eljwwttx.html