Xcode 11 Beta不会因为WatchKit而构建?

mqkwyuun  于 2023-11-21  发布在  其他
关注(0)|答案(5)|浏览(135)

在Xcode 10上工作。现在在beta版中我不能构建我一直得到这个错误:
为iOS模拟器构建时,“WatchKit”不可用。请考虑使用#if !os(iOS)有条件地导入此框架。


的数据

rnmwe5a2

rnmwe5a21#

我在WatchKit扩展中的一个swift文件也遇到了同样的问题。原来它是iOS应用和WatchKit扩展的成员。我在文件的目标成员部分取消了iOS应用,以便它只属于WatchKit扩展目标。现在项目成功构建。

q9rjltbz

q9rjltbz2#

Apple Watch与iPhone/iPad之间的一些通信功能曾经在WatchKit框架中实现。但在某些时候,它被转移到WatchKitConnectivity框架中。
如果您查看目标的“构建阶段”->“将二进制文件与库链接”部分,您将看到“WatchKit.framework”状态为“可选”。iOS 13+已经变得更加“严格”,因此除非我完全删除“WatchKit.framework”,否则它不会构建,而是添加“WatchConnectivity.framework”。
另外,请确保您的iPhone/iPad代码引用使用“import WatchConnectivity”而不是“import WatchKit”。

az31mfrm

az31mfrm3#

我们需要使用“条件导入”来解决这个问题。
import WatchKit头替换为以下代码:

#if !os(iOS)
import WatchKit
#endif

字符串
这解决了我的问题,并在iOS 13中成功构建。

piok6c0g

piok6c0g4#

Xcode 11从iOS SDK中删除了WatchKit。从release notes
WatchKit框架不再包含在iOS SDK中。如果您正在使用iOS中的WatchKit API,则需要删除此用途。WatchKit框架在watchOS上仍然可用。如果您正在使用iOS中的WatchKit API来推断配对Apple Watch上功能的可用性,请在向Feedback Assistant提交反馈时包含有关您的用例的信息。(49707950)
这包括引用plugin.xml中WatchKit的Cordova插件:

<framework src="WatchKit.framework" />

字符串
上面的一行将添加WatchKit作为iOS应用目标的框架。您需要删除它并仅将WatchKit添加到应用的Watch目标。

jgwigjjp

jgwigjjp5#

我在WatchKitExtension中的InterfaceController.h中有<WatchKit/WatchKit.h>,因为它必须是。我在InterfaceController.m文件的目标成员资格中取消了iOS“Test”目标,错误消失了。特别感谢ToniK指导我那里。

相关问题