从Mac OS X控制台启动iOS应用程序

为了自动化testing一个应用程序,我想反复启动一个iOS应用程序,使用不同的参数,从我的Mac的主要function; 为简单起见,我们只是说它需要一个文件作为ARGC,我有100个文件,我需要testing。 理论上,我想要重现的是xcode的构build和运行 – 在设备上的行为,而不是越狱 ; 该应用程序与硬件密切相关,因此模拟器本身是不够的。

有几个页面可以做类似的事情,但是没有一个使用这个设备,而且他们中没有一个实际上是说明了控制台上的命令行实际上是怎么样的。

1) http://blog.carbonfive.com/2011/04/06/running-xcode-4-unit-tests-from-the-command-line/

这个页面设置一个unit testing,最终在模拟器中运行; 他接着说

unit testing构build目标的“运行脚本”构build阶段运行>“$ {SYSTEM_DEVELOPER_DIR} / Tools / RunUnitTests”

我检查了这一点,但从Xcode 4执行RunPlatformUnitTests和RunUnitTests都没有(我重命名脚本来确保)。

2) http://longweekendmobile.com/2011/04/17/xcode4-running-application-tests-from-the-command-line-in-ios/

这个页面select了1)离开的地方,但是只为模拟器build立,并没有指定应用程序是如何启动的。 它描述了如何从命令行构build。

3) debugging从命令行构build的iOS应用程序

我在Xcode 4中看到的是构build阶段,停止签名和validation应用程序。 接下来我看到的是在设备上运行的gdbdebugging器。 但是,我不知道如何访问debugging服务器 – 我没有jailbrake我的iPhone,所以我不能访问任何东西,无论是debugging服务器还是IP地址。

我可以validation的是gdb从xcode4 / platforms / iPhoneOS.platform调用,所以远程debugging器必须附加到自己的东西,不知何故…

对于命令行远程GDB(或只是上传到设备),你可以使用这个小工具,select最接近你需要的叉,原作者不会支持它: https : //github.com/ghughes/fruitstrap

你可能无法使用它(我不得不调整gdb参数供我使用),但它是一个很好的开始。

您可以通过自动运行此脚本来进一步自动化

for i in $(system_profiler SPUSBDataType | grep "Serial Number: " | grep -Po "[A-Za-z0-9]{40,}$") ; do echo "Installing on: $i" #use fruitstrap with device $i end 

这将只是检查所有的USB端口,只保留当前连接到iOS设备,并返回其UDID。

从那里你应该可以自动化testing与几个不同的参数为您的应用程序。