17

在 Xcode 10 上工作。现在在测试版中我无法构建我不断收到此错误:

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

在此处输入图像描述

4

4 回答 4

18

WatchKit 扩展中的一个 swift 文件也有同样的问题。事实证明,它既是 iOS 应用程序的成员,也是 WatchKit 扩展程序的成员。我在文件的目标成员资格部分取消了 iOS 应用程序的勾选,以便它只属于 WatchKit 扩展目标。现在项目构建成功。

于 2019-06-07T16:43:39.150 回答
11

Apple watch 与 iPhone/iPad 之间的一些通信功能曾经在 WatchKit 框架内实现。但在某个时候,它被转移到了 WatchKitConnectivity 框架中。

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

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

于 2019-09-20T11:42:54.253 回答
9

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

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

#if !os(iOS)
import WatchKit
#endif

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

于 2019-06-10T06:09:18.920 回答
8

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

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

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

<framework src="WatchKit.framework" />

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

于 2019-09-25T17:35:49.400 回答