iOS:如何从URL调试“全新启动”应用


73

从URL启动应用程序时,URL是重新启动应用程序还是恢复处于已暂停状态的应用程序之间存在区别。

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

Answers:


118

这些步骤可以在设备上执行。创建于此链接

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

在模拟器上,由Marc-AlexandreBérubé建议。

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

4
为了使用iOS Simulator进行更轻松的测试,我们可以使用终端并粘贴命令xcrun simctl openurl booted http://yourdomain/path以使用所需的URL启动应用程序。
Marc-AlexandreBérubé'17

1
但是当我这样启动应用程序时,Xcode不会立即附加-当我希望它停止在URL解析/路由代码的断点时该怎么办?
fabb

@fabb如果正确执行步骤,则应该在URL解析中遇到断点。
Lian van der Vyver '17

1
xcrun simctl openurl booted http://yourdomain/path对我而言,无法在真实设备上运行:(
Hlung

3
真的很重要。如果更改了任何代码,则必须关闭“等待可执行文件”,然后生成并运行然后停止。然后重新打开“等待...”。否则,Xcode不会在您的测试设备上安装更新的二进制文件(至少在Xcode 10.1中)
n8tr

31

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

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


如果您正在模拟器上调试,这里有个提示:Yu还可以编辑保存的Web剪辑的URL。他们只是〜/ Library / Application Support / iPhone Simulator / 7.1-64 / Library / WebClips中的读者。(根据需要调整7.1-64。)
史蒂芬·费舍尔

谢谢 !你救了我的一天!
阿拉丁·加拉斯

提示:我在〜/ Library / Developer / CoreSimulator / Devices / {GUID} / data / Library / WebClips中找到了我的WebClip。(Xcode 7.1.1 / Simulator 9.1)
Matt Montag

8
记住,链接消失...想要用链接的内容更新您的答案吗?
Phlippie Bosman'9

3
因为原始链接互联网档案馆链接是水涨船高:web.archive.org/web/20160311071930/http://blogmobile.itude.com/...
里德埃利斯

5

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

最适合我的就是在Mac上打开Console.app,然后使用OSLogAPI从模拟器中获得可靠的穴居人调试流。

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

它虽然不漂亮,但高度可靠。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.