Xcode 11 Beta won't build because of WatchKit?

jim*_*jon 12 xcode

Worked on Xcode 10. Now in the beta I can't build I keep getting this error:

a "WatchKit" is not available when building for iOS Simulator. Consider using #if !os(iOS) to conditionally import this framework.

Ton*_*niK 11

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


tre*_*bor 7

Xcode 11从iOS SDK中删除了WatchKit。从发行说明

WatchKit框架不再包含在iOS SDK中。如果您使用的是来自iOS的WatchKit API,则需要删除此用法。WatchKit框架在watchOS上仍然可用。如果您使用iOS上的WatchKit API推断配对的Apple Watch上的功能是否可用,请在将反馈提交给Feedback Assistant时包括有关用例的信息。(49707950)

这包括在plugin.xml中引用WatchKit的Cordova插件:

<framework src="WatchKit.framework" />
Run Code Online (Sandbox Code Playgroud)

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


use*_*824 6

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

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

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


小智 5

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

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

#if !os(iOS)
import WatchKit
#endif
Run Code Online (Sandbox Code Playgroud)

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