我将 Xcode 更新到 11.1 版并得到了这个预期的错误:
为 iOS 模拟器构建时,WatchKit 不可用。
然后我按照建议从 iOS 应用程序目标中删除了 WatchKit。从那以后我遇到了这个错误:
架构 x86_64 的未定义符号:
“_OBJC_CLASS_$_WKInterfaceController”,引用自:INFOnlineLibrary(IOLWatchKitHelper.o)中的 objc-class-ref ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用)未定义符号:_OBJC_CLASS_$_WKInterfaceController
PS:x86_64 部分取决于设备/模拟器的选择。如果我选择一个真实的设备,它会为 arm64 给出相同的错误。所以我不认为这是一个架构问题,因为包含 WKInterfaceController 的框架只是一个标准的 watchOS 框架,即 Watchkit。
PS_2:iOS 应用中没有使用 WKInterfaceController 甚至 WatchKit。它仅用于 WatchAppExtension 部分
到目前为止我已经尝试过:
- 首先是将 WatchKit 框架添加到 WatchApp 和 WatchAppExtension 目标。
- 当我为架构 x86_64 类型的错误搜索未定义符号时,通常有许多不同的建议。尽管我认为它不依赖于架构,但我尝试在所有目标中设置仅构建活动架构。最建议将 $(inherited) 放入搜索路径之前已经完成。
- 检查 .m 文件的目标。他们都很好。
- 我什至还评论了所有使用 WKInterfaceController 的代码。之后什么都没有改变。我还删除了手表应用程序,它仍然在寻找 _OBJC_CLASS_$_WKInterfaceController 但我不确定它是否正确。
- 我用命令检查了 WatchKit.framework 设备支持文件,
file WatchKit.framework
发现它支持 arm64。然后将该库手动添加到库中,在设备上运行但仍然无法正常工作。