WatchKit扩展包标识符

Tom*_*mer 53 ios bundle-identifier apple-watch watchkit

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

错误:WatchKit Extension不包含任何其包标识符与"com.domain.appname.watchkitapp"匹配的WatchKit应用程序.验证WatchKit Extension的Info.plist中WKAppBundleIdentifier的值是否与WatchKit App的Info.plist中的CFBundleIdentifier值相匹配.

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

我无法找到改变它的地方.

Dej*_*dar 179

更改包标识符时必须小心,这里应该如何设置它们(您需要更改iPhone应用程序,Watchkit扩展Watchkit应用程序的Info.plist中的每个标识符):

iPhone应用程序信息列表:

根据需要设置任何包标识符("Bundle identifier"属性).

例:

Bundle identifier: com.fruitcompany.orange
Run Code Online (Sandbox Code Playgroud)

WatchKit App Info.plist

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

Bundle identifier: com.fruitcompany.orange.watchkit
Run Code Online (Sandbox Code Playgroud)

你还需要改变WKCompanionAppBundleIdentifier必须与iPhone应用程序包标识符,这样的搭配:

WKCompanionAppBundleIdentifier: com.fruitcompany.orange
Run Code Online (Sandbox Code Playgroud)

Watchkit扩展信息列表:

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

Bundle identifier: com.fruitcompany.orange.watchkit.extension
Run Code Online (Sandbox Code Playgroud)

您还需要WKAppBundleIdentifierNSExtension属性下设置.

WKAppBundleIdentifier

WKAppBundleIdentifier标识符必须与这样的应用WatchKit绑定标识符匹配:

WKAppBundleIdentifier: com.fruitcompany.orange.watchkit
Run Code Online (Sandbox Code Playgroud)

  • 隐藏`WKAppBundleIdentifier`嵌套在`NSExtension`中,但在错误消息中仅通过其未作用域的名称提及它是纯粹的邪恶.我只是假设它丢失并手动添加到根目录,这当然导致了同样的错误和挫折感.感谢传播真相! (16认同)
  • 我遵循相同的方法,但我得到嵌入式二进制文件的包标识符没有前缀为父应用程序的包标识符. (2认同)
  • 扩展包的标识应该是com.fruitcompany.watchkit.entension吗? (2认同)

Ada*_*onR 17

首先,让我强调@DejanSkledar在本页面上的优秀答案,因为答案中提到的所有位置都很重要.

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

在我找到edwardmp关于相关问题的答案之后,以下是每个相应的info.plist文件中的设置.

iPhone应用程序的捆绑ID:com.domain.yourapp

观看App的Bundle Id:com.domain.yourapp.watchkit

Watchkit的Extension Bundle Id:com.domain.yourapp.watchkit.extension

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

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

观看App的WKCompanionAppBundleIdentifier:com.domain.yourapp

观看App的扩展WKAppBundleIdentifier:com.domain.yourapp.watchkit

希望这可以节省一些时间,因为我不得不在这几个小时挣扎:(