信息

我的应用在运行watchOS 4和5的Apple Watch上崩溃。某些新功能(例如Combine)取决于watchOS 6,并且使用这些方法时使用

@available(watchOSApplicationExtension 6.0.0, *)


该应用程序是使用Xcode 9/10创建的(我确切地忘记了哪个),并且以watchOS 4为目标。现在,它是使用Xcode 11构建的,并且具有依赖Combine的文件时,它会在watchOS 5 Apple Watch上崩溃。

错误是

dyld: Library not loaded: /System/Library/Frameworks/Combine.framework/Combine
  Referenced from: /private/var/containers/Bundle/Application/7A361FAB-EBE7-483D-BFD7-E915F15B5B14/Chirp WatchKit App.app/PlugIns/Chirp WatchKit Extension.appex/Chirp WatchKit Extension
  Reason: image not found


显然,Combine的表现不佳。

此外,它不会在watchOS 5模拟器中启动,并且错误说明更多:

dyld: Library not loaded: /System/Library/Frameworks/Combine.framework/Combine
  Referenced from: /Users/willbishop/Library/Developer/CoreSimulator/Devices/C6F36860-E70A-45E6-AC3B-E54DBCEA7C7A/data/Containers/Bundle/Application/1B2EC7C4-731F-4EC1-B23F-09A0B49CD055/Chirp WatchKit App.app/PlugIns/Chirp WatchKit Extension.appex/Chirp WatchKit Extension
  Reason: no suitable image found.  Did find:
    /System/Library/Frameworks/Combine.framework/Combine: mach-o, but wrong architecture


我尝试过的


我以为可能是因为我有watchOS 6依赖代码,以及watchOS 5文件。但是,将代码移到单独的文件中后,问题仍然存在。
清理项目
删除Derived Data/


尽管如此,还是没有运气。我认为这是某个地方的构建设置,但是我不会知道哪一个是最模糊的线索。

最佳答案

我相信您需要做的是使Combine.framework可选链接。由于某种原因,Combine不能为此使用普通的UI(还可以吗?),但是another thread中似乎有解决方案。

关于swift - 在watchOS 5.2崩溃中找不到适合Combine的合适图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57638220/

10-12 12:54