在连接的iPhone上启动已安装的应用程序

我正在尝试为某些iOS应用程序启动自动化testing解决scheme。 我正在使用fruitstrap将已编译的应用程序传输并安装到已连接的iPhone,但是我正在努力寻找一种在安装完成后自动启动应用程序的方法。

Fruitstrap有一个选项来运行GDBdebugging器中的应用程序,该程序可以正常工作。 不幸的是,有一些testing用例需要在没有附加debugging器的情况下运行应用程序(特殊的崩溃处理)。 我已经花费了大量的时间,通过MobileDevice Library上的资源,这是Fruitstrap使用的资源,但是我一直无法启动任何应用程序。

有任何想法吗?

你可以通过使用fruitstrap或者Xcode来启动一个“bootstrap”程序,这个程序可以让你的目标应用程序通过Michael所描述的自定义URL来运行。

当引导程序在debugging器下运行时,URL调用的程序将正常运行。

创build引导程序和使用URL Schemes可能是一些人的select,当然应该考虑,但它不符合我的要求。

我最终做的是用debugging器通过fruitstrap启动应用程序。 我重新编译了fruitstrap以包含以下prep命令(在GDB_PREP_CMDS中定义):

handle all noprint pass nostop continue 

该句柄将信号传递给程序,所以自定义信号处理程序(在这种情况下,崩溃处理程序)将处理信号。 continue是我需要的,所以一旦debugging器启动,应用程序就会运行。

这里有一个不幸的缺陷,不幸的是我不知道一个解决方法。 GDB的ARM7版本没有像达尔文版本那样的“set dont_handle_bad_access”命令。 出于某种原因传递EXC_BAD_ACCESS信号到程序不起作用,应用程序挂起。 这是很重要的,因为这是大多数崩溃的信号。 但是就目前而言,它是我所能做的最好的,至less它处理的是未被捕获的例外。

我相信你可能正在寻找某种自定义urlscheme。

查看下面的文档并向下滚动到:实现自定义URLscheme

http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html

您也可以在iOS中使用Google URL Schemes来查看是否遇到类似于您正在尝试执行的操作。

让我知道这是否帮助你。 如果你有成功的话,听听会很有意思。

干杯。