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 框架故事会有所改进。
我有一个 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 框架故事会有所改进。