RubyMotion Android 开发入门

感谢您选择 RubyMotion。本指南将帮助你开始使用 RubyMotion 开发 Android 应用。

1. 概述

RubyMotion 是一套工具链,可以让你使用 Ruby 编程语言开发 iOS、OS X 以及 Android 应用。

iOS 是苹果公司的移动操作系统,运行在诸如 iPhone、iPod touch 以及 iPad 等硬件平台之上。 OS X 是苹果公司的桌面操作系统,运行在诸如 iMac 以及 Macbook Air 一类的 Mac 平台之上。 Android 是 Google 公司的移动操作系统,运行在由各种不同厂商生产的数量庞大的硬件平台之上。

开发者可以为 iOS,OS X 编写应用,并提交到苹果官方的应用程序分发渠道—— App Store。同样,RubyMotion 也可以用来实现 Android 应用,并提交到 Google Play 应用商店。

宏观上来说,RubyMotion 包含下面两个主要部分。

  • 运行时( Runtimes ) : 全新的 Ruby 语言实现,与 Apple 和 Google 原生运行库紧密结合,并为嵌入式系统做了特殊优化。

  • 项目管理 : 提供一套命令行接口,用来创建、管理和交互式的进行 RubyMotion 项目开发。包括一个可以将 Ruby 代码编译成经过优化的机器代码的静态编译器和一个可以用来进行表达式计算和实时修改程序行为的交互式命令行。

RubyMotion 安装在 '/Library/RubyMotion' 目录,并为其终端命令在 '/usr/bin/motion' 创建软链接。

本文档针对使用 RubyMotion 开发 Android 应用。对于 iOS 以及 OS X 平台,请访问 《RubyMotion iOS 以及 OS X 开发入门》

2. 先决条件

RubyMotion 需要一台运行有 OS X 10.8.4 或更高版本的 64 位 Mac 电脑。我们推荐使用 OS X 10.12 Sierra 或更高版本的 OS X 系统。

为了使用 RubyMotion 开发 Android 应用,您需要在您的电脑中安装正确的 Android 开发环境。

2.1. 安装 Java

RubyMotion 编译系统需要系统已经安装 Java 编译器。但是 OS X 默认不安装 Java。

请根据 该页面的步骤,在你的开发环境中安装 Java。

Install Java 1.8 also.

完成之后,你可以通过下列命令验证你时候正确安装了 Java。

$ javac -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

2.2. 配置 Android 开发环境

RubyMotion 提供一个简单的命令来帮助开发者正确配置 Android 开发环境。

$ motion android-setup

该命令讲下载 Android SDK 和 NDK,并保存在 ~/.rubymotion-android 目录。之后会运行 Android UI 工具让你选择你需要的目标 Android API 版本。

2.3. 安装更快的仿真器(可选)

内建的 Android 仿真器对于开发来说非常慢,但是我们有很多第三方工具可供选择。

在编写本文是,我们推荐 Genymotion 。RubyMotion 与 Genymotion 工作正常,请访问 《Project Management 指南》学习如何为基于英特尔处理器的仿真器编译应用。

2.4. 配置你的 Android 设备,用于开发

你需要一个 Android 设备来测试你开发的 RubyMotion 应用。

为了防止你还没有正确配置的你的 Android,请将设备通过 USB 线缆链接到你的 Mac 上,然后执行如下步骤:

  1. 打开 Settings 应用。

  2. 向下滚动,跟据你所用的设备,点击 About phone 或者 About tablet 选项。会打开一个新的页面。

  3. 向下滚动,然后点击 Build number 七次。之后,会产生一个信息,告诉你你的设备已经进入开发者模式。

  4. 返回前面的页面,然后向下滚动,你会发现出现了 Developer options 选项。点击进入。

  5. 选中 USB debugging 选项。该选项将允许你的 Mac 与你的设备进行通信,执行开发任务。你的设备上会出现一个窗口,要求你对你的 Mac 进行授权,请确认正确授权。

你已经完成了全部配置!

如果你使用的是一个旧版本的 Android 设备,上面的步骤可能不适合你。我们建议你去搜索引擎,搜索你的 Android 版本号 + 如何开启开发者模式(enable developer mode) ,找寻解决方案。

3. 代码编辑器

安装完 RubyMotion 之后,你需要一个代码编辑器来进行开发。RubyMotion 不需要使用任何专有 IDE,你可以继续使用你喜欢的编辑器。

3.1. RubyMine

RubyMine 是基于 JetBrains 公司的 IntelliJ IDEA 平台的商用 Ruby 开发环境。

RubyMine 是在写作本文的时候最好的 RubyMotion 工作环境。RubyMotion 提供基于上下文的自动完成、即点即选(point-and-click)调试(支持模拟器和真实设备)、内联文档(inline documentation)等功能。

请访问 JetBrains 的开发者网站上的文章 《Getting Started with RubyMotion(RubyMotion 入门指南)》 获取更多信息。

3.2. TextMate

TextMate 是 OS X 上广受欢迎的编辑器。

RubyMotion.tmbundle 插件提供了代码自动完成和编译系统集成,由 Libin PanBerklee 开发维护。

3.3. Sublime Text

Sublime Text 是一款横跨 OS X、Windows 以及 Linux 系统的一款较新的编辑器,获得了非常多的关注。

SublimeRubyMotionBuilder 插件提供了代码自动完成和编译系统集成,由 Kentaro Hara 开发维护。

3.4. Redcar

Redcar 是一款使用 Ruby 开发的开源的编辑器。

redcar-rubymotion 插件为 Redcar 集成了 RubyMotion 工作流程,提供 RubyMotion 的全部功能集成,由 Delisa Mason 开发维护。

3.5. Vim

Vim 是最流行 vi 编辑器的克隆。Vim 可以运行在 OS X 系统上。 MacVim 是一个可以让 Vim 在 OS X 系统上运行在终端之外的软件。

内建的 rake ctags 任务可以用来生成 tags 文件,tags 文件包含了项目可以调用的所有 API。这个文件可以被编辑器用来做代码自动补全。RubyMotion 使用 Exuberant Ctags 生成 tags 文件。Ctags 可以被众多文本编辑器所理解,包括 Vim。

更好的代码补全体验可以使用 snipmate-snippets-rubymotion 插件,感谢 Rajeev Cyrus 的贡献。

3.6. Emacs

Emacs 是一款广受欢迎的文本编辑器。Emacs 可以运行在 OS X 系统上。

motion-mode 插件提供了代码自动完成和编译系统集成,由 Satoshi Namai 开发维护。

4. 软件更新

软件更新可以通过命令终端。

下面的命令将会从网络上下载最新的 RubyMotion 安装包,并安装。你必须接入互联网,才能正确更新 RubyMotion。

$ sudo motion update

你可以通过下列命令来检查你所安装的 RubyMotion 版本。

$ motion --version
5.8

每天,RubyMotion 编译系统都会向软件更新服务器查询一次是否有新的 RubyMotion 版本可供更新。

如果有新版本,RubyMotion 将会在终端中提示你需要更新。如果你的软件许可证快要过期,编译系统也会在编译的时候提醒你。

技术支持 ~~-

如果你遇上了问题,希望 RubyMotion 增加新的功能或者有任何一问,你都可以通过终端命令行提交工单给我们。

$ motion support

上述命令将打开一个新的浏览器窗口,你可以在这个窗口中填上工单内容。你的软件许可密钥和其他有用的环境信息将会自动添加到工单上。

Note
工单支持仅限专业版和企业版。如果你不能发工单,你可以通过在社区论坛上询问,获得支持。

5. Hello World

我们来为 Android 设备创建一个 Hello World 程序。

打开你的终端,进入你希望创建项目的目录,输入下列命令创建 Android 项目。

$ motion create --template=android Hello
$ cd Hello
Note
我们向 motion 命令传递了一个新的参数 --template=android 。因为 motion create 默认创建 iOS 项目,由于我们需要创建 OS X 项目,因此我们需要指明使用 Android 项目模板。

上面的命令将创建一个名为 Hello 的新目录,目录内容便是项目文件,包括 Rakefile 以及 app/main_activity.rb 等文件。

你可以在你的设备上运行该程序。确保你的设备已经通过 USB 链接到你的 Mac 上,然后运行下列命令:

$ rake device

应用会立即在你的设备上运行(请确保已经解锁屏幕)。因为我们还没有编写任何代码,所以你将看到一个空的窗口。

现在,编辑 app/main_activity.rb 文件,并加入如下代码:

class MainActivity < Android::App::Activity
  def onCreate(savedInstanceState)
    puts "Hello World!"
    super
    view = Android::Widget::TextView.new(self)
    view.text = "Hello World!"
    self.contentView = view
  end
end

如果你再次运行 rake device 命令,你会在你的设备上看到 hello world 字样。同时,因为调用了 #puts 方法,你会在你的终端看到相同的字样。

6. 下一步

恭喜你,你已经成功创建你的第一个用 RubyMotion 开发的 Android 应用。很简单,不是吗?

接下来,我们强烈建议您访问 代码样例,或者访问 Github 上的 代码样例的代码库。正如前面的页面介绍的那样,每一个子目录都包含一个 RubyMotion 项目。你可以简单地通过在每一个项目目录下面运行 rake 命令来编译和执行该项目,也可以去每个项目的 'app' 目录阅读该项目的源代码。