iOS 在模拟器(而非设备)上调试 AppleWatch 应用程序时应用程序立即崩溃

iOS app crashes immediately when debugging AppleWatch app on Simulator (not on device)

我有一个 AppleWatch 应用程序,它在模拟器和设备中运行良好,但是当我调用 openParentApplication 时,父应用程序似乎立即崩溃了,因为我在控制台输出中看到了这一点:

The UIApplicationDelegate in the iPhone App never called reply()...

当我尝试在模拟器中手动启动父 iOS 应用程序时,它也立即崩溃了。我没有时间附加调试器(它已经附加到 AppleWatch 应用程序)来查看导致它崩溃的原因。请注意,当 AppleWatch 运行ning 并且我使用的是真正的 iPhone 时,父应用 运行 没问题。当不调试 AppleWatch 应用程序时,我也可以 运行 在模拟器上正常运行该应用程序。

我已尝试重置模拟器,但问题仍然存在。

我只是不确定如何调试它。感谢任何帮助。

您看到真正的崩溃了吗?在主机应用程序没有崩溃的情况下,这条消息已经出现了很多次。

99% 的情况下,该错误的出现是因为开发人员没有打开后台任务来完成他们在 handleWatchKitRequest 中的工作。如果没有后台任务,OS 会在您的应用有机会回复之前在后台终止您的应用。

handleWatchKitRequest 中启动显式后台任务。否则,您的应用会在达到 reply().

之前被杀死

有关如何创建后台任务的代码示例,请参阅此

事实证明,在注释掉父应用程序的 didFinishLaunching 中的所有代码并从 watch 扩展中剥离几乎所有代码后,问题确实在较低级别。

模拟器有一个

Debug | Open System Log...

显示崩溃日志的菜单选项,其中包含:

Dyld Error Message: Library not loaded: @rpath/MyCore.framework/MyCore Referenced from: /Users/me/Library/Developer/CoreSimulator/Devices/A2061705-DDDF-477C-9AAA-E50GG43A6350/data/Containers/Bundle/Application/DEB7FB25-8233-4B9F-8DAB-9FF8AE42BF33/MyApp.app/MyApp Reason: no suitable image found. Did find: /Users/me/Library/Developer/CoreSimulator/Devices/A2061705-DDDF-477C-9AAA-E50FF43A6350/data/Containers/Bundle/Application/DEB7FB25-8553-4B9F-8DAB-9FF8AE95BF33/MyApp.app/Frameworks/MyCore.framework/MyCore: mach-o, but wrong architecture

我的 Swift 应用程序有几个相关的 Swift 项目,供应用程序和扩展程序使用。将 Swift 框架升级到 link 是一个很大的痛苦。我已经将依赖框架(在同一工作区中编译)作为嵌入式二进制文件包含在内。这在设备或模拟器上 运行 时有效,但在此混合手表应用程序 + 父应用程序模拟器上下文中 运行 时无效。

我将嵌入式二进制引用更改为指向 ...DerivedData...Debug-iphonesimulator 下的框架,而不是 ...DerivedData...Debug-iphoneos,问题就消失了。

仍然希望 Swift 框架故事会有所改进。