剑客
关注科技互联网

用 Sublime 编译和运行 iOS 项目

几天不见,今天聊个这个话题,源于之前一个同学的提问。 Sublime 是否能够配置成直接编译和运行 iOS 项目呢? 本着探索精神,经过一番查阅资料,得到的答案是可以的。下面就和大家一一道来。

Sublime Project

翻阅了一下 Sublime 官方的文档,它是有 Project 这个概念的。也就是说它不止能够编辑文件目录这些,还可以当做 Project 来操作。 它的项目文件是一个扩展名为 .sublime-project 的文件。

那么有了这个了解,我们就知道这一切的设想是可能的。 那么咱们来实际的体验一下。 假设我们创建了一个项目,名称为 sublimeBuild。 那么再这个项目的根目录中, 我们同样创建一个 sublimeBuild.sublime-project 文件。 这样,我们的文件结构就是这样:

用 Sublime 编译和运行 iOS 项目

创建好项目文件后,可以这样编辑这个文件:

{
"folders": [
{
"follow_symlinks": true,
"path": "."
}

],

"build_systems": [
{
"name": "Build",
"cmd": [ "xcodebuild",
"-project", "$project_path/$project_base_name.xcodeproj",
"-configuration", "Debug",
"-scheme", "sublimeBuild",
"SYMROOT=$project_path/build/Products/Debug",
"OBJROOT=$project_path/build"
]
}

]
}

其实它就是一个 JSON 配置文件。 它有两个根节点, folders 和 build_systems。 folders 里面指定这个项目包含的所有文件。 注意它是一个数组,所以我们可以指定多个条目。 里面属性的咱们只简单介绍一下, follow_symlinks 就是自动展开符号链接(如果不知道符号链接,可自行搜索补脑~)。 path 属性就更好理解了, 文件的路径。这个属性可以让 Sublime 在左边栏正确的显示项目的文件列表。

第二个节点 build_systems,这个才是最主要的。指定了我们这个项目的构建系统,也就是怎么来打包,运行这个项目。 xcodebuild 是命令行方式给 iOS 项目打包的标配了。 这个命令后面的参数咱们来简单的说一下。

  • -project: 指定了 project 文件的位置,有它才能知道我们整个项目的文件关系。
  • -configuration: 你要以什么配置运行项目 Debug 还是 Release
  • -scheme: 简单的项目一般只有一个 Scheme, 如果你的项目依赖关系比较稍微复杂的话,指定你主 App 所对应的 Scheme 即可。
  • SYMROOT 和 OBJROOT 是项目构建结果的输出目录。 我们这里指定在项目根目录中的 build 目录中。 其中 $project_path 这种引用是 sublime-project 的预置变量。代表项目的根目录。

配置文件就介绍到这里。 如果需要更详细的了解它们,大家可以继续参考 sublime 的 build systems 相关的文档,方便起见在这里也给大家贴出 http://sublimetext.info/docs/en/reference/build_systems.html

最后再提点一下, —project 配置中的 $project_base_name 对应的是我们这个 sublimeBuild.sublime-project 的文件名。 sublimeBuild.sublime-project 文件一定要和 sublimeBuild.xcodeproj 的扩展名前面的部分相同,否则以咱们这个配置就找不到 .xcodeproj 文件了。 当然这不是唯一的方法,你也可以把 .xcodeproj 的全名写在这个配置属性里。

构建项目

闲言少叙,配置工作做完了,咱们接下来看看怎么在 Sublime 里面构建项目吧。 首先打开 Sublime, 在菜单中打开 Project -> Open Project…

用 Sublime 编译和运行 iOS 项目

然后选择我们刚刚建立的 sublimeBuild.sublime-project 文件,这样就打开项目了。 如果一切配置正确,成功打开项目后, 在 Sublime 中按下 Command + B 键,即可编译项目。 你有可能会遇到这样的错误:

用 Sublime 编译和运行 iOS 项目

这是证书相关的问题。 最简单的办法,打开 Xcode 正确的配置好项目的 Bundle 和证书相关的内容。 当然,还可以用一些脚本自动化的处理这些事情,因为我们这次的主题是介绍 Sublime 的构建相关内容,所以就不详细讨论这个啦。

一切都配置正确后, 重新按下 Command + B 键, 你应该可以看到这样的输出:

用 Sublime 编译和运行 iOS 项目

这就代表构建成功了。 这时候,你会在项目的根目录中看到一个 build 目录,也应该能在相应的位置找到构建好的 app 包了:

用 Sublime 编译和运行 iOS 项目

运行 APP

通过对 Sublime 上面一系列配置, 咱们成功在 Sublime 上构建出项目了。 接下来就是怎么让构建出来的 APP 包运行在设备上了。 通过命令行来运行 APP 也有一些方法,参考了一些资料后,发现一个比较好用的开源库, phonegap 的 ios-deploy。 这是一个 nodejs 模块, 我们需要先安装它:

npm install -g ios-deploy

如果你的电脑上没有 npm 命令, 那么你需要先安装 nodejs 环境, 可以通过 Homebrew 来安装:

brew install node

关于 ios-deploy 更详细的内容, 大家可以参考它的 Github 主页 https://github.com/phonegap/ios-deploy 那里面有完整的介绍和示例。 我们这里只针对我们这个应用场景来举例。可以先在命令行上面尝试一下:

ios-deploy --debug --bundle /你的构建目录/sublimeBuild.app

—debug 参数表示调试的方式运行, —bundle 参数后面写入刚才生成的 app 包的路径。 运行完这个命令后,你会看到命令行中一连串这样的输出:

------ Debug phase ------
Starting debug of iPhone 6s ·iPhone' (12312312321357392625a8df83360012) connected through USB...

[ 0%] Looking up developer disk image
[ 95%] Developer disk image mounted successfully
[100%] Connecting to remote debug server
....

(lldb) connect
(lldb) run
success
(lldb)

最后命令行停留在 LLDB 调试命令中。 是的,它还启动了 LLDB 进程,假如你的 APP 有断点之类的还可以在这里面直接调试。

好了 ios-deploy 就演示完了。 比起其他的命令行调起方式来说, ios-deploy 确实简单易用。

但是,刚才一系列演示都需要我们在命令行中手动输入一连串的命令才能跑起来我们的 APP。 我们的目标是在 Sublime 中也能直接跑起来。

咱们继续修改配置文件:

{
"folders": [
...
],

"build_systems": [
{
...
"variants": [
{
"name": "Run",
"shell_cmd": "ios-deploy --debug --bundle $project_path/build/Products/Debug/Debug-iphoneos/$project_base_name.app"
}

]

}

]

}

这次我们在 build_systems 中添加了一个新的节点 variants。 为了表达清晰,其余的节点用 … 省略到了~。 我们来看看这个节点, 它也是一个数组,可以指定一些额外的构建命令。这里添加了一个, name 属性为 Run, 这个是显示在 Sublime UI 中的。 还有一个 shell_cmd 属性, 这个是实际要运行的命令了。 其实就是我们刚才在命令行中运行的 ios-deploy。 只是后面的参数我们用 sublime 提供的变量拼接成我们生成的 APP 包的路径了。

其中 $project_path 和 $project_base_name 这两个变量咱们之前都介绍过了。 还要注意一点,我们这里用的是 shell_cmd 属性, 而不是 cmd 属性。 如果用 cmd 属性是不能直接执行 nodejs 脚本的。

这样,我们就可以在 Sublime 中运行 APP 了。 在 Sublime 中按下 Shift + Command + B 键, 这时候会出现一个可用的构建命令的列表:

用 Sublime 编译和运行 iOS 项目

可以看到,除了 Build 命令, 还有一个 Build – Run 命令, 我们选择这个命令就可以直接运行我们刚刚生成的 APP 包了。

结尾

怎么样,经过一些简单的配置 Sublime 已经成为一个有一定基本能力的 iOS 开发工具了。 当然,我们的这些配置还并不完善, 如果继续研究的话,肯定还能把它做得更好,这就由大家发挥才智啦。

最后完整的配置文件内容大家可以到我们的 Github 页面上找到 https://gist.github.com/swiftcafex/9af7428b1b72ddcaeaa25bdb33159811

如果你觉得这篇文章有帮助,还可以关注微信公众号 swift-cafe,会有更多我的原创内容分享给你~

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址