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

在模拟器(非设备)上调试AppleWatch应用程序时,iOS应用程序立即崩溃,ios,xcode,swift,watchkit,apple-watch,Ios,Xcode,Swift,Watchkit,Apple Watch,我有一个AppleWatch应用程序,在模拟器和设备中运行良好,但当我调用openParentApplication时,父应用程序似乎立即崩溃,因为我在控制台输出中看到: iPhone应用程序中的UIApplicationLegate从未调用过reply() 当我试图在模拟器中手动启动父iOS应用程序时,它也会立即崩溃。我没有时间连接调试器(已经连接到AppleWatch应用程序)来查看是什么导致它崩溃。请注意,当AppleWatch正在运行且我使用的是真正的iPhone时,父应用程序运行良好。

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

iPhone应用程序中的UIApplicationLegate从未调用过reply()

当我试图在模拟器中手动启动父iOS应用程序时,它也会立即崩溃。我没有时间连接调试器(已经连接到AppleWatch应用程序)来查看是什么导致它崩溃。请注意,当AppleWatch正在运行且我使用的是真正的iPhone时,父应用程序运行良好。当不调试AppleWatch应用程序时,我也可以在模拟器上很好地运行该应用程序

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


我只是不知道如何调试这个。非常感谢您的帮助。

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


99%的情况下,出现该错误是因为开发人员没有在
handleWatchKitRequest
中打开后台任务来完成他们的工作。如果没有后台任务,操作系统会在你的应用程序有机会回复之前在后台杀死它

handleWatchKitRequest
中启动显式后台任务。否则,您的应用程序将在到达
reply()
之前被杀死


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

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

模拟器有一个

调试|打开系统日志

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

Dyld错误消息:未加载库: @rpath/MyCore.framework/MyCore引用自: /用户/me/Library/Developer/CoreSimulator/Devices/A2061705-DDDF-477C-9AAA-E50GG43A6350/data/Containers/Bundle/Application/DEB7FB25-8233-4B9F-8DAB-9FF8AE42BF33/MyApp.app/MyApp 原因:未找到合适的图像。确实发现: /用户/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,但架构错误

我的Swift应用程序有几个由应用程序和扩展程序使用的依赖Swift项目。让Swift框架连接起来一直是一大难题。我将相关框架(在同一工作区中编译)作为嵌入式二进制文件包含在内。当在设备上运行或在模拟器上运行时,此功能有效,但在混合手表应用程序+父应用程序模拟器上下文中运行时不起作用

我将嵌入的二进制引用改为指向
…DerivedData…Debug iphonesimulator
下的框架,而不是
…DerivedData…Debug iphoneos
,问题就解决了


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

@bgiham我发出了HandleWatchKit请求,只需执行以下操作:reply(nil),我仍然会得到相同的控制台输出。但我假设该应用程序正在以某种方式中止,因为我无法在iPhone模拟器中手动启动它。事实上,我让didFinishLaunching立即返回,但除了最初的发布图像,我仍然什么也看不到。如果没有一些代码示例,您将很难调试它。我的应用程序也有类似的问题。事实证明,我的父应用程序只有在后台模式下启动时才会崩溃。看到了,谢谢,但我把handleWatchKitRequest改为call reply(无),这种情况仍然存在。当在模拟器上手动启动时,应用程序仍然没有启动。我也马上回来了。一些可能与执行代码无关的低级问题似乎正在起作用。困惑。我也有这个问题,但我使用cocoapods来管理第三方库。你能帮助我吗?“我将嵌入的二进制引用改为指向…DerivedData…Debug iphonesimulator下的框架,而不是…DerivedData…Debug iphoneos”这句话是什么意思?对不起,我不明白该怎么做exactly@Lolloz89你的第一个问题是使用椰子荚