4

信息

我的应用程序在运行 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/

尽管如此,还是没有运气。我认为这是某处的构建设置,但我不会有最微弱的线索来确定哪个。

4

1 回答 1

1

我相信您需要做的是使Combine.framework可选链接。出于某种原因,Combine 不能为此使用普通 UI(还没有?),但似乎在另一个线程中有解决方案。

于 2019-08-24T16:48:30.213 回答