Xcode 11 Beta是否因为WatchKit而无法构建?

时间:2019-06-07 12:32:40

标签: xcode

在Xcode 10上工作。现在在beta版中,我无法构建此错误:

  

为iOS Simulator构建时,“ WatchKit”不可用。   考虑使用#if !os(iOS)有条件地导入此框架。

4 个答案:

答案 0 :(得分:8)

Apple Watch与iPhone / iPad之间进行通信的某些功能以前是在WatchKit框架内实现的。但是到了某个时候,它已经进入了WatchKitConnectivity框架。

如果您在目标的“构建阶段”->“将二进制文件与库链接”部分中查找,您将看到状态为“可选”的“ WatchKit.framework”。 iOS13 +变得更加“严格”,因此除非我完全删除“ WatchKit.framework”,然后添加“ WatchConnectivity.framework”,否则它将无法构建。

还要确保您的iPhone / iPad代码使用“导入WatchConnectivity”而不是“导入WatchKit”。

答案 1 :(得分:7)

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插件:

data.frame(t(replicate(5, k)))
#OR
data.frame(matrix(rep(k, each = 5), 5))
#OR
data.frame(t(sapply(1:5, function(x) k)))
#  X1 X2 X3 X4
#1  1  2  3  4
#2  1  2  3  4
#3  1  2  3  4
#4  1  2  3  4
#5  1  2  3  4

以上行将把WatchKit添加为iOS应用程序目标的框架。您需要删除它,并仅将WatchKit添加到Watch的应用目标。

答案 2 :(得分:2)

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

答案 3 :(得分:0)

我们需要使用“条件导入”来解决此问题。

用以下代码替换import WatchKit标头:

#if !os(iOS)
import WatchKit
#endif

这解决了我的问题,并且可以在iOS 13中成功构建。