Xcode 11 Beta 由于 WatchKit 而无法构建?

问题描述 投票:0回答:5

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

为 iOS 模拟器构建时,“WatchKit”不可用。 考虑使用

#if !os(iOS)
有条件地导入此框架。

ios xcode watchkit xcode11
5个回答
18
投票

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


11
投票

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

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

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


9
投票

我们需要使用“Conditional Imports”来解决这个问题。

用以下代码替换

import WatchKit
标题:

#if !os(iOS)
import WatchKit
#endif

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


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 目标。


0
投票

我在 WatchKitExtension 的 InterfaceController.h 中有 ,它一定是这样。我取消选中 InterfaceController.m 文件的目标成员资格中的 iOS“测试”目标,错误消失了。特别感谢 ToniK 指导我到达那里。

© www.soinside.com 2019 - 2024. All rights reserved.