WatchKit 应用无法编译:“错误:WatchKit 扩展不包含任何 WatchKit 应用程序”。

16
有关此问题的帖子有几篇,但是在我的情况下没有提出的解决方案有效。我正在尝试按照 Apple 提供的说明将 WatchKit 集成到一个简单的示例应用程序中(我现在已经尝试了几个),但是编译时会出现以下错误消息:
“错误:WatchKit Extension 没有包含任何 WatchKit 应用程序。请验证您 WatchKit 应用程序的 Info.plist 中的 WKWatchKitApp 的值是否设置为 YES。”
我已成功编译并运行了 Apple Watch 的“目录”示例,因此我知道从 iPhone 到 Watch 的透视图是可以工作的。当我尝试与现有应用程序集成时,似乎某些东西不对。
我已经在这个主题上看过 posts(例如WatchKit app wont run on simulator),但是在我的情况下没有修复措施起作用;bundle IDs 看起来都正确。请注意,我正在尝试在 iPhone 6 上编译和运行,而不是在模拟器上。
有什么建议吗?

你是否检查过Watchkit应用程序信息的plist键“WKWatchKitApp”?这是真的吗? - Anil Varghese
已检查并确认 WKWatchKitApp 已设置为 YES。 - jamey
8个回答

46
当我更改了我的iOS应用程序的bundle id时,我遇到了这个错误。以下是我在项目资源管理器中所做的步骤:
  1. 在WatchApp --> plist下

    WKCompanionAppBundleIdentifier ==> 给出iOS应用程序的id (例如: com.xxxx.appname)

  2. 在WatchApp Extension --> plist下 NSExtension-->NSExtensionAttributes-->WKAppBundleIdentifier ==> 给出watchkit应用程序的id (例如: com.xxxx.appname.watchkitapp)

这样做解决了我的错误。

任何仍然在执行此操作后仍然出现错误的人应该查看下面nmunjal的答案。它为我解决了问题。 - Matt Rundle
截至2019年10月,这个答案仍然有效。我在为中央应用程序复制新的捆绑标识符的目标时发现了这一点。 - Dru Freeman
这对我有用,但我不得不手动编写bundles,并且无法使用$(PRODUCT_BUNDLE_IDENTIFIER)。 - Ahmadreza

9

我在XCode版本10.2 (10E125)上遇到了这个问题,当我更改WatchkitApp Bundle标识符时,WatchkitApp扩展中的一个键没有更改并保持为旧的Bundle标识符。

plist路径:/Users/.../YourXcodeProjectFolder/Project/YourWatchkitExtensionFolder/info.plist

问题出现在这里:

<key>NSExtension</key>
<dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>WKAppBundleIdentifier</key>
        <string>com.applecode.water.watchkit</string>
    </dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.watchkit</string>
</dict>

关键字WKAppBundleIdentifier出了问题,所以我自己修改了它。


1
将扩展和应用程序的info.plist更改为匹配标识符对我有用。我在xcode上使用11.2.1。 - Nadine Rose
我在11.3.1中也做了同样的事情,但问题仍然存在,有任何解决方法吗? - Erum

5

我注意到这一问题出现在Xcode 8.2.1版本上。以下是我解决它的方法:

进入“WatchKit App” -> “Build Settings” -> “Packaging” -> “Product Name”

将其更改为任何与当前字符串不同的字符串。尽管在下面的链接中被称为奇怪的解决方案,但我们仍然可以采用它。

来源: https://blogofpuneet.wordpress.com/2015/05/02/xcode-build-error-watchkit-extension-doesnt-contain-any-watchkit-apps-verify-that-the-value-of-wkwatchkitapp-in-your-watchkit-apps-info-plist-is-set-to-yes/


我一整天都被那个看似相反的“WatchKit应用程序不包含任何WatchKit扩展”错误困扰着,真是让人抓狂。但这个方法解决了我的问题。我在产品名称末尾添加了“foo”,然后运行了应用程序,它第一次就成功了,然后我又将“foo”删除了,现在它仍然可以正常工作。 - arlomedia
Xcode 11.3.1还是给我同样的错误?有什么解决办法吗? - Erum

4

感谢提供链接。原来这是一篇关于配置WatchKit应用程序的关键文章(带有许多详细信息等)。 在大量调试之后,我的一个样例应用程序现在可以工作了,而第二个更复杂的应用程序仍然无法工作,并报告相同的错误。 但至少我现在有一个可工作的示例。非常感谢! - jamey

3

以下设置对我有用

  • 在主应用程序Info.plist中

Bundle标识符:com.domain.WatchKit-table

  • 在Watchkit应用程序Info.plist中

WKCompanionAppBundleIdentifier:com.domain.WatchKit-table

Bundle标识符:com.domain.WatchKit-table.watchkitapp

  • 在WatchKit扩展Info.plist中

NSExtension>NSExtensionAttributes>WKAppBundleIdentifier:com.domain.WatchKit-table.watchkitapp

Bundle标识符:com.domain.WatchKit-table.watchkitapp.watchkitextension

注意:我的bundle id的第三个组件为*。 WatchKit-table是我的项目名称


2

我注意到在更改构建号后,使用xcode 10.0会出现这个问题。

清理构建文件夹,关闭xcode,然后重新打开即可解决。


1
在我的情况下,我遇到了构建扩展库的问题。实际上它没有被构建,我有两个错误: 1. 链接器错误,关于缺少扩展库。 2. 来自Xcode的“丢失”NSExtensionPointIdentifier键的错误。
修复链接错误也解决了这个消息。

0

我正在使用Xamarin和Visual Studio(在PC上)。 我遇到了这个问题,但以上的修复方法都没有起作用。 与XCode修复类似,然而,重新启动Visual Studio就是答案。 /叹气


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接