【问题标题】:Launch installed app on tethered iPhone在连接的 iPhone 上启动已安装的应用程序
【发布时间】:2012-07-09 22:58:02
【问题描述】:

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

Fruitstrap 有一个在 GDB 调试器中运行应用程序的选项,它可以工作。不幸的是,有些测试用例需要在没有附加调试器的情况下运行应用程序(特殊的崩溃处理)。我花了很多时间来处理 Fruitstrap 使用的 MobileDevice Library 上可用的资源,但在启动应用程序时我无法打开任何东西。

有什么想法吗?

【问题讨论】:

  • 这台设备是越狱了吗,或者你能越狱解决这个问题吗?您可以使用 Wifi 通信,还是仅限于 USB 系绳通信?
  • 设备无法越狱。 Wifi 是一种选择,但不是首选。

标签: iphone ios ipad


【解决方案1】:

您可以通过使用fruitstrap 或Xcode 来启动“引导”程序来做您想做的事情,该程序会导致您的目标应用程序通过Michael 所描述的自定义URL 运行。

虽然引导程序将在调试器下运行,但通过 URL 调用的程序将正常运行。

【讨论】:

  • 虽然这是一个值得的想法,但不幸的是它对我来说不是一个选择。我无法修改要启动的应用程序的源以包含 URL 处理程序。还要安装引导程序和要测试的应用程序,开销太大。
【解决方案2】:

创建一个引导程序并使用 URL Schemes 对某些人来说可能是一种选择,当然应该考虑,但它不符合我的要求。

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

handle all noprint pass nostop
continue

句柄会将信号传递给程序,因此自定义信号处理程序(在本例中为崩溃处理程序)将处理该信号。 continue 是我需要的东西,这样应用程序才能在调试器启动后真正运行。

这有一个不幸的缺陷,不幸的是我不知道解决方法。 GDB 的 ARM7 版本没有 darwin 版本的“set dont_handle_bad_access”命令。由于某种原因,将 EXC_BAD_ACCESS 信号传递给程序不起作用并且应用程序挂起。这很重要,因为这是大多数崩溃的信号。但就目前而言,这是我能做的最好的了,至少它可以处理未捕获的异常。

【讨论】:

    【解决方案3】:

    我相信您可能正在寻找某种自定义 URL 方案。

    查看以下文档并向下滚动至:实施自定义 URL 方案

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

    您还可以在 iOS 中搜索 URL Schemes 以查看是否遇到与您正在尝试做的事情类似的事情。

    如果这对您有帮助,请告诉我。如果你有任何成功的话会很有趣。

    干杯。

    【讨论】:

    • URLSchemes 是一个聪明的主意,但我不确定它是否对我来说是一个可行的解决方案。我需要能够直接从设备所连接的计算机上启动应用程序,并且我相信 URLSchemes 只能在设备上的其他应用程序中工作。
    猜你喜欢
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    相关资源
    最近更新 更多