63

我正在尝试构建我的应用程序,但失败了。我看到下面的消息。

错误:WatchKit 扩展不包含任何捆绑标识符匹配“com.domain.appname.watchkitapp”的 WatchKit 应用程序。验证 WatchKit Extension 的 Info.plist 中 WKAppBundleIdentifier 的值是否与 WatchKit App 的 Info.plist 中 CFBundleIdentifier 的值匹配。

我最近更改"com.domain.appname.watchkitapp""com.domain.differentappname.watchkitapp".

我找不到在哪里改变它。

4

5 回答 5

203

更改捆绑包标识符时必须小心,以下是它们的设置方式(您需要更改 Info.plist 中iPhone 应用程序Watchkit 扩展程序Watchkit 应用程序的每个标识符):

iPhone 应用程序信息.plist:

根据需要设置任何捆绑标识符(“捆绑标识符”属性)。

例子:

Bundle identifier: com.fruitcompany.orange

WatchKit App Info.plist

此处的包标识符必须以 iPhone 应用程序的标识符作为前缀,如下所示(示例):

Bundle identifier: com.fruitcompany.orange.watchkit

您还需要更改WKCompanionAppBundleIdentifierwhich必须与 iPhone 应用程序包标识符匹配,如下所示:

WKCompanionAppBundleIdentifier: com.fruitcompany.orange

WatchKit 扩展信息.plist:

此处的包标识符必须以 iPhone 应用程序的标识符作为前缀,如下所示(示例):

Bundle identifier: com.fruitcompany.orange.watchkit.extension

您还需要WKAppBundleIdentifierNSExtension属性下设置。

WKAppBundleIdentifier

WKAppBundleIdentifier标识符必须与 WatchKit 应用程序包标识符匹配,如下所示:

WKAppBundleIdentifier: com.fruitcompany.orange.watchkit

不要忘记检查项目目标中的 Bundle ID 是否与Info.plist 中的相同!

于 2015-05-13T09:10:32.703 回答
20

首先,让我强调@DejanSkledar 在此页面上的出色答案,因为答案中提到的所有位置都很重要。

也就是说,该答案中的精确设置对我来说还不够。我想补充这个答案并指出,从 watchkit 2 开始,当您从应用程序工作到手表应用程序,最后到应用程序扩展时,似乎需要一个层次结构,就捆绑 ID 而言。

在我找到edwardmp 对相关问题的回答后,以下是对我有用的每个相应 info.plist 文件中的设置。

iPhone App 的 Bundle Id:com.domain.yourapp

Watch App 的 Bundle Id:com.domain.yourapp.watchkit

Watchkit 的扩展包 ID:com.domain.yourapp.watchkit.extension

正如你所看到的,一个 iPhone 应用程序有一个 watchkit 应用程序,它本身恰好有一个 watchkit 扩展,每个级别都必须反映在它们各自的包 id 中。

完成关系后,手表应用程序必须使用它的 (WKCompanionAppBundleIdentifier) 指向它所属的 iPhone 应用程序,并且手表扩展程序必须指向它所属的手表应用程序 (WKAppBundleIdentifier)。

Watch App的WKCompanionAppBundleIdentifier:com.domain.yourapp

Watch App的扩展WKAppBundleIdentifier:com.domain.yourapp.watchkit

希望这可以节省一些时间,因为我不得不为此奋斗了几个小时:(

于 2016-02-02T06:56:42.043 回答
2

您可能还必须更改项目 iOS 配套应用程序的 info p.list 中的 WKCompanionAppBundleidentifier 键,以匹配手表套件扩展 info.plist 中的 WKAppBundleIdentifer 键。当我复制早期的手表套件项目并更改手表套件扩展 info.plist 中的 WKAppBundleIdentifier 以匹配手表套件 info.plist 中的包标识符时,我发现了这一点,并且该项目仍然出现相同的错误。您需要转到 Finder,找到 iOS 配套项目 info.plist,然后双击它,然后根据需要更改 WKCompanionAppBundleIdentifer 键。通过查看 Xcode 中的 info.plist,我无法看到此密钥。

于 2016-01-17T23:14:48.603 回答
0

因此,当您只想在测试设备上运行时,您不一定要更改某些内容。但是您确实需要再请求两个配置文件才能测试手表应用程序。这两个额外的标识符可以从扩展目标和监视应用目标中获取。这也是您想要将手表应用上传到App Store时需要做的事情

于 2015-05-13T05:16:55.650 回答
0

在 WatchKit Extension info.plist 中是一个 NSExtension 条目。展开它,你会发现一个关键的 WKAppBundleIdentifier,它是对 WatchApp 的包标识符的引用

从 Apple 试试这个: https ://developer.apple.com/forums/thread/5956?login=true

于 2021-10-16T08:31:22.443 回答