RubyMotion iOS 以及 OS X 开发入门

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

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 开发 iOS 以及 OS X 应用。对于 Android 平台,请访问 《RubyMotion Android 开发入门》

2. 先决条件

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

你需要在你的机器上安装 iOS 以及 OS X SDK,它们都集成在 XCode 中。

2.1. 安装 Xcode

Xcode 可以从 App Store 中下载安装。

Note
Xcode 是苹果公司出品的 IDE。当年使用 RubyMotion 开发的时候,你无需使用它,你可以继续使用你所喜爱的代码编辑器。

打开 App Store 应用,并搜索 "Xcode"。

Searching for Xcode in the App Store

在搜索结果中找到 Xcode,并点击它。

Searching for Xcode in the App Store

然后会打开一个新的页面,你可以下载 Xcode。

一旦 Xcode 安装完毕,你需要安装 Command Line Tools,RubyMotion 需要它才能使用。

从你的 Applications 文件夹打开 Xcode 应用,然后进入 Preferences 窗口,点击 Downloads 标签页。你会在列表中发现 'Command Line Tools',然后点击该选项的 Install 按钮。

Installing the Command Line Tools package

安装完成之后,你就完成了所有的环境配置,现在可以关闭 Xcode了。

如果你在安装新版 Xcode 之前已经安装了旧版的 Xcode,你需要使用下列命令来确保使用正确的 Xcode 目录。

$ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

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 将会在终端中提示你需要更新。如果你的软件许可证快要过期,编译系统也会在编译的时候提醒你。

5. 技术支持

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

$ motion support

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

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

6. Hello World

6.1. iOS

我们现在可以开始写你的第一个 RubyMotion iOS 应用:Hello World。

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

$ motion create Hello

上面的命令将创建一个名为 Hello 的新目录,目录内容便是项目文件。如果已经存在同名目录,该命令将会失败。

我们来看下项目目录里面都有什么。

$ cd Hello
$ ls
Rakefile app resources spec

RubyMotion 项目基于 Rakefilerake 是一个 Ruby 构建系统,与 make 软件功能类似。Mac OS X 默认提供 rake 支持。

app 目录存放应用程序代码, resources 目录存放类似图标、图像以及声音等资源文件, spec 目录存放测试文件。

让我们尝试运行下 rake 默认任务。

$ rake

上述命令将构建我们的项目,并打开模拟器。你会在模拟器中看到一个空的黑色的窗口。这个是正常的,因为我们还没有写任何代码。

进入 app 目录,你会发现一个已经创建的名为 app_delegate.rb 的文件。该文件实现了 AppDelegate 类,用来管理你的整个应用程序。

class AppDelegate
  def application(application, didFinishLaunchingWithOptions:launchOptions)
    true
  end
end

在你喜欢的代码编辑器中打开 app/app_delegate.rb 文件。我们尝试在其中添加一些代码,比如打开一个提示窗口。

class AppDelegate
  def application(application, didFinishLaunchingWithOptions:launchOptions)
    alert = UIAlertView.new
    alert.message = "Hello World!"
    alert.show
    true
  end
end

如果你重新运行 rake 命令,你会在模拟器中看到一个提示窗口。

Hello World

现在,我们来进行真机调试。请确认你的 iOS 设备已经正确配置开发环境,且通过 USB 与电脑相连。然后执行下列命令。

$ rake device

上述命令将在你的设备上安装 Hello 应用。你可以运行该应用,当应用打开之后,你会看到提示窗口。

恭喜你,你已经创建了你的第一个 RubyMotion 应用。非常简单,不是吗?

6.2. OS X

现在,我们来尝试编写你的第一个 RubyMotion OS X 应用: Hello World。

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

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

上面的命令将创建一个名为 Hello 的新目录,目录内容便是项目文件。如果已经存在同名目录,该命令将会失败。

我们来看下项目目录里面都有什么。

$ cd Hello
$ ls
Rakefile app resources spec

RubyMotion 项目基于 Rakefilerake 是一个 Ruby 构建系统,与 make 软件功能类似。Mac OS X 默认提供 rake 支持。

app 目录存放应用程序代码, resources 目录存放类似图标、图像以及声音等资源文件, spec 目录存放测试文件。

让我们尝试运行下 rake 默认任务。

$ rake

上述命令将构建我们的项目,并打开应用。你会看到一个空的窗口。这个是正常的,因为我们还没有写任何代码。

进入 app 目录,你会发现一个已经创建的名为 app_delegate.rb 的文件。该文件实现了 AppDelegate 类,用来管理你的整个应用程序。

class AppDelegate
  def applicationDidFinishLaunching(notification)
    buildMenu
    buildWindow
  end
end

在你喜欢的代码编辑器中打开 app/app_delegate.rb 文件。我们尝试在其中添加一些代码,比如打开一个提示窗口。

class AppDelegate
  def applicationDidFinishLaunching(notification)
    buildMenu
    buildWindow

    alert = NSAlert.new
    alert.messageText = "Hello World!"
    alert.runModal
  end
end

如果你重新运行 rake 命令,你会在应用窗口中看到一个提示窗口。

Hello World

7. 下一步

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

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