Xcode 6错误:"嵌入式二进制文件包标识符不以父应用程序的包标识符为前缀."

chi*_*tza 62 xcode6 ios8 ios-app-extension

我正在尝试构建一个扩展项目,Xcode不断抛出主题中的错误.

Xcode日志错误

不用一天,扩展程序的包ID 以app的包ID 前缀.

产品名称: ro.chitza.TodayPics.$(TARGET_NAME:rfc1034identifier

扩展束id

我已经尝试清理构建文件夹并重建,没有运气.有趣的是,整个项目已经构建了几次,但在一些代码和UI更改后,它开始失败.即使我创建了新项目,在大约5-6个构建之后也会发生同样的事情.

有没有人遇到这个错误?有关解决方案或解决方法的任何提示吗?

Jul*_*ian 31

在构建之前尝试清理.这解决了我的问题(Xcode 6b2).

  • @chitza 明确表示“我尝试清理构建文件夹并重建,但没有成功。” 我也遇到过 chitza 的问题,并且清理并不能解决 Xcode 9.3 中的问题。 (2认同)
  • 建议删除DerivedData,并Clean。步骤如下: Xcode 文件 —> 工作区设置 —> 单击直接按钮(只需在高级按钮上方)转到 /Users/{YourName}/Library/Developer/Xcode/DerivedData —> 删除 DerivfedData 下面的所有内容 (2认同)

edw*_*dmp 30

当WatchOS 2到达时,看起来捆绑ID行为发生了变化.

以前我有一个扩展包标识符,如下所示:

com.mycompany.myappname.watchkitextension
Run Code Online (Sandbox Code Playgroud)

在Stackoverflow的其他地方,有人提到扩展包标识符应该采用这种格式,但无论我尝试什么,Xcode都会向我抛出错误.

唯一可行的解​​决方案是将扩展束标识符更改为:

com.mycompany.myappname.watchkitapp.watchkitextension
Run Code Online (Sandbox Code Playgroud)

我很确定这不是WatchOS 1应用程序的情况.由于此更改而导致的问题是您实际上无法为包标识符生成应用程序ID com.mycompany.myappname.watchkitextension.这不是必需的,只需将构建设置中的所有配置文件设置为自动,并且不要忘记为发布/ ad-hoc /调试方案使用正确的代码签名证书.

我实际上发现这种方法有效,因为Xcode建议修复问题,这就是它的作用.


San*_* SM 17

我做了如下修改:

主应用程序包ID: com.myapp.testapp

扩展应用包ID: com.myapp.testapp.myextension

和它的作品!


Sus*_*cob 14

我不得不手动将扩展名的info.plist中的BundleID更改为我需要的内容.

我提交了一个雷达:rdar:// 17487465

  • 我爱你雅各布=) (2认同)

dol*_*048 12

这帮助了我:

扩展需要将父代的捆绑ID作为其前缀.

例如,如果您的应用程序是com.ronnathan.myapp,则您的扩展名必须是com.ronnathan.myapp.today.您重命名了应用目标,现在进入扩展目标并更改名称以匹配.

取自这里


Mic*_*ang 8

目标 - >常规 - >嵌入式二进制文件删除旧的并选择新的这是我如何解决这个问题 在此输入图像描述


coo*_*eet 5

我遇到了同样的错误,您可能添加了像 Today 小部件这样的扩展程序,因为扩展程序本身也是一个二进制文件,因此它有自己的 plist,并确保在扩展程序的 plist 中,bundle id 以应用程序的 bundle id 为前缀。希望这可以帮助。


Mil*_*vić 5

对于 xCode v12,我一键解决了这个问题:

目标 -> 构建阶段 -> 嵌入应用扩展

并检查: Copy only when installing

在此处输入图片说明

  • 对我有帮助! (4认同)
  • 这也是我的解决方案。但你能解释一下“为什么”这有效吗? (2认同)