无需多言,扩展的捆绑标识已经以应用程序的捆绑标识为前缀。
产品名称:
ro.chitza.TodayPics.$(TARGET_NAME:rfc1034identifier
我尝试过清理构建文件夹并重新构建,但没有成功。有趣的是整个项目已经成功构建了几次,但在进行一些代码和UI更改后就开始失败了。即使我创建新的项目,在大约5-6次构建之后也会发生同样的情况。是否还有其他人遇到过这个错误?您有解决方案或解决方法的任何提示吗?
ro.chitza.TodayPics.$(TARGET_NAME:rfc1034identifier
我尝试过清理构建文件夹并重新构建,但没有成功。有趣的是整个项目已经成功构建了几次,但在进行一些代码和UI更改后就开始失败了。即使我创建新的项目,在大约5-6次构建之后也会发生同样的情况。看起来 WatchOS 2 推出后,捆绑 ID 的行为发生了变化。
之前我的扩展捆绑标识符是这样的:
com.mycompany.myappname.watchkitextension
在Stackoverflow的其他地方提到扩展包标识符应该是这种格式,但无论我尝试什么,Xcode都会抛出错误。
唯一可能的解决方案是将扩展包标识符更改为:
com.mycompany.myappname.watchkitapp.watchkitextension
我很确定这在WatchOS 1应用程序中不是这种情况。由于这种更改而引起的问题是,您实际上无法为捆绑标识符com.mycompany.myappname.watchkitextension
生成应用程序ID。这并非必要,只需将构建设置中的所有配置文件都设置为自动,并且不要忘记为发布/自定义/调试方案使用正确的代码签名证书即可。
我发现这种方法有效是因为Xcode建议修复问题,并且这就是它所做的。
在构建之前尝试进行清理。这对我解决了问题(Xcode 6b2)。
我不得不在扩展的info.plist中手动更改BundleID以符合我的需求。
我已经提交了一个雷达问题:rdar://17487465
${PRODUCT_NAME}
。所以对于OP的示例,我们会在扩展的info.plist文件中使用ro.chitza.TodayPics.$(TARGET_NAME:rfc1034identifier)
作为BundleId。 - Pete这个对我很有帮助:
扩展需要使用父应用程序的Bundle ID作为前缀。
例如,如果您的应用程序的Bundle ID是com.ronnathan.myapp,则您的扩展必须是com.ronnathan.myapp.today。您已经重命名了应用程序目标,现在进入扩展目标并更改名称以匹配它。
我遇到了相同的错误,你可能添加了一个类似于今日小部件的扩展程序,由于扩展程序本身也是一个二进制文件,因此它具有自己的属性列表。请确保在扩展程序的属性列表中,bundle id 前缀与应用程序的 bundle id 相同。希望这能帮到你。
Xcode编译时错误
error: Embedded binary's bundle identifier is not prefixed with the parent app's bundle identifier
扩展应用程序
[关于] ID 应该扩展一个包含应用程序
的ID
//for example
//Extension App id
com.company
//Containing App id
com.company.extension