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

Chi*_*itz 62 debugging xcode openurl ios ios-simulator

从URL启动应用程序时,区别在于URL是刚刚启动应用程序,还是它正在恢复已处于暂停状态的应用程序.

我的问题是,如何 URL 调试"新发布"的过程?点击Xcode中的"运行"会自动打开应用程序.然后,我必须暂停应用程序才能访问Safari并访问我的测试站点.但是,如果我关闭我的暂停的应用程序,Xcode不再附加到它,我无法调试.

Lia*_*ver 86

可以在设备上遵循这些步骤.成立于此链接.

  1. 从Xcode运行应用程序将其安装到您的设备上,然后从Xcode停止它.
  2. 强制从设备上的应用切换器UI退出应用.
  3. 导航到Xcode中的项目方案.在"运行"部分的"信息"选项卡下,有一个"等待可执行文件启动"的单选按钮.确保选中此项而不是"自动"选项.
  4. 从Xcode运行应用程序.它不会在设备上打开,但调试器会等待它打开然后它会附加到它上面.

在Marc-AlexandreBérubé建议的模拟器上.

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

  • 为了便于使用iOS模拟器进行测试,我们可以使用终端并粘贴命令`xcrun simctl openurl booted http:// yourdomain/path`以使用我们想要的URL启动应用程序. (4认同)
  • 非常重要的注意事项。如果您进行任何代码更改,您必须关闭“等待可执行文件”并构建并运行然后停止。然后重新打开“等待...”。否则 Xcode 将不会在您的测试设备上安装更新的二进制文件(至少在 Xcode 10.1 中) (4认同)
  • 但是当我像这样启动应用程序时,Xcode 不会立即附加 - 当我希望它在 url 解析/路由代码中的断点处停止时该怎么办? (2认同)
  • `xcrun simctl openurl booted http://yourdomain/path` 对我来说在真实设备上不起作用:( (2认同)
  • 如果我这样做,Xcode 就会等待。但它不会在控制台上显示任何调试日志。 (2认同)

小智 31

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

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

  • 记住,链接死...用链接的内容更新你的答案? (6认同)
  • 由于原始链接已消失,因此Internet存档链接:http://web.archive.org/web/20160311071930/http://blogmobile.itude.com/2013/09/03/how-to-debug-deep-linking-in -ios / (3认同)

nte*_*iss 6

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

对我来说最有效的方法是在我的 mac 上打开Console.app,并使用OSLogAPI 从模拟器中获得稳定的穴居人调试流。

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

它并不漂亮,但非常可靠。

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