iOS:如何从URL调试“刚刚启动”应用程序

时间:2013-08-29 21:29:50

标签: ios xcode debugging ios-simulator openurl

从网址启动应用时,网址是刚刚启动某个应用,还是已恢复已暂停状态的应用有区别。

我的问题是,如何从 URL调试“全新启动”的过程?点击Xcode中的“运行”会自动打开应用程序。然后,我必须暂停应用程序才能访问Safari并访问我的测试站点。但如果我关闭我暂停的应用程序,Xcode就不再附加到它上面了,我无法调试。

3 个答案:

答案 0 :(得分:71)

可以在设备上执行这些步骤。成立于此link

  1. 从Xcode运行应用程序将其安装到您的设备上然后停止它 来自Xcode。
  2. 强制从设备上的应用切换器用户界面退出应用。
  3. 导航到Xcode中的项目方案。在Run下 部分的信息选项卡,有一个单选按钮“等待可执行文件 要启动“。确保检查这个而不是 “自动”选项。
  4. 从Xcode运行应用程序。它不会打开 在设备上,但调试器将等待它打开然后它 会附上它。
  5. 在Marc-AlexandreBérubé建议的模拟器上。

    1. 在模拟器上运行您的应用。
    2. 强制退出模拟器上的应用。按cmd+shift+(hit h twice)。滑动应用程序。
    3. 打开终端并输入此xcrun simctl openurl booted http://yourdomain/path

答案 1 :(得分:31)

您需要配置Xcode应用方案以等待手动启动应用。 您的工作方式如下:http://blogmobile.itude.com/2013/09/03/how-to-debug-deep-linking-in-ios/

然后,您需要复制启动网址并将其粘贴到Mobile Safari。这将启动您的应用程序,并使Xcode附加到正在运行的应用程序进程。

答案 2 :(得分:4)

尽管从理论上讲,激活“等待可执行文件启动”的答案是好的,但是由于各种原因,这些答案对我不起作用。在模拟器上,尽管Xcode声称已“附加”,但从未显示任何日志或断点。在设备上,我运行的是iOS 13,它是从Xcode 10构建的,并使用Xcode 11进行加载,因此我没有任何调试符号。我怀疑这更多是个人问题,我怀疑在设备调试上可能有用。

最适合我的就是在Mac上打开 Console.app ,然后使用OSLog API从模拟器中获取可靠的穴居调试信息。

  1. 从Xcode在模拟器上运行应用程序。
  2. 然后立即通过启动的应用程序(Cmd-Shift-H * 2)在模拟器上将其退出
  3. 通过点击我通过“消息”应用发送给自己的深层链接来启动应用
  4. 在Console.app中观察我的日志

虽然不漂亮,但是非常可靠。

还值得一提的是,您可以通过XCUITest测试冷启动深度链接来保护此有用的功能。您可以在XCUITests中调用app.terminate,然后打开一个深层链接(通常通过您已设置的静态网页,为此我使用公共GitHub Wiki),并像正常情况下编写测试和断言行为。