移动测试基础 还在等待漫长的 iOS 构建过程?来试试通过命令行的方式进行 iOS 应用快速构建和运行吧

TechoGoGoGo · 2015年02月08日 · 最后由 HellenGo 回复于 2016年08月12日 · 2328 次阅读
本帖已被设为精华帖!


不必多言,Xcode 慢得很是众所周知的了。更甚者是,我有时发觉自己太依赖于 Cocoa Touch 的自动完成功能了,这可是个天使和魔鬼的结合体!

故此我开始去寻觅一个替代的流程来通过命令行来实现我需要的功能。结果是相当让人困惑:有一些文章建议用 xctool 和 xcodebuild 来构建 Xcode 目标应用,然后用 ios-sim,simctrl 和 instruments 来管理和运行模拟器,但大部分这些信息都是老掉牙且零碎不堪的。

值得庆幸的是,我最终还是通过九牛二虎之力把这些琐碎的信息拼凑再一起来达到我自己的目的。那就是,假如现在有一个通过 Xcode 6 建立的 iOS 项目,我想要做到如下几点:
-构建目标应用
-启动一个 iOS 模拟器
-把该 app 应用安装到上面启动好的模拟器上面
-运行安装好的 app
-从模拟器上卸载掉该 app
那么我想把这些所有事情都通过命令行来实现,也就是说把 Xcode 给关闭掉的情况来完成这些工作。

在我们继续往下走之前,你需要先收集以下的一些基本信息:
-你所选择的通过 Xcode 进行构建的 scheme(比如 “AwesomeApp")
-你的应用包 id(比如"com.awesome.app")
-已经创建好的模拟器的名称 (比如"iPhone6 Plus")。如果你不想从 Xcode 的 GUI 中获取到这些信息,你大可以通过查看命令 xcrun simtl list 的输出来进行收集
准备好了吗?那我们就开始吧!

(注意以下的命令需要在你的项目文件夹下面运行)

构架目标应用
xcodebuild -scheme AwesomeApp -destination 'platform=iphonesimulator,name=iPhone 6 Plus' -derivedDataPath build

启动运行模拟器
xcrun instruments -w 'iPhone 6 Plus'

安装应用包(当然你是需要在通过以上命令构建好目标应用和启动完成模拟器之后来运行此命令了)
xcrun simctl install booted build/Build/Products/Debug-iphonesimulator/AwesomeApp.app

启动模拟器中已经安装好的应用(在该应用已经通过如上命令安装好之后)
xcrun simctl launch booted com.awesome.app

删除该安装包
xcrun simctl uninstall booted com.awesome.app
如果你需要构建的是一个相当复杂的项目的话,你其实是需要给构建命令指定不少的一些参数的。具体请阅读 RTFMs(Read The Fucking Manuals:阅读那该死的使用手册!)。如果你是像我一样是个懒虫的话,请通过编写一些脚本来自动完成这些步骤吧。

转载请尊重原创/译
作者:天地会珠海分舵
微信资源分享公众号:techgogogo 或扫描图片二维码

共收到 3 条回复 时间 点赞

如此好帖竟然没人回。用 xcode cmd+R 的时候确实慢,特别是对于我们这种有几百万行代码的项目来说。

不过我用 ruby motion 的时候用命令行编译也不见得快很多。

首先非常感谢楼主的分享!

请教下,在打包的时候,我用的命令是:

xcodebuild -destination 'platform=iphonesimulator,name=iPhone 6 Plus' -sdk iphonesimulator8.1 -arch armv7s clean build

打包成功,显示 ** BUILD SUCCEEDED ** ,接下来在打开的模拟器中安装包时,提示失败,也没足够的提示:

Mac:app zhang$ xcrun simctl install booted build/Release-iphonesimulator/Test.app
An error was encountered processing the command (code=0):
The operation couldn’t be completed. (LaunchServicesError error 0.)

按照http://www.2cto.com/kf/201412/365591.html 这里说的步骤也没办法安装成功。

请各位帮忙,感激不尽!

xcrun instruments -w 'iPhone 6 Plus' 运行后提示
Waiting for device to boot...
Instruments Usage Error: No template (-t) specified
instruments, version 7.3 (60134)
usage: instruments [-t template] [-D document] [-l timeLimit] [-i #] [-w device] [[-p pid] | [application [-e variable value] [argument ...]]]
Build step 'Execute shell' marked build as failure

-t 指定了 template 后就一直 Waiting for device to boot 怎么破

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