我正在尝试构建一个扩展项目,而 Xcode 不断在主题中抛出错误。
不用说,扩展的 bundle id以 app 的 bundle id为前缀。
产品名称:ro.chitza.TodayPics.$(TARGET_NAME:rfc1034identifier
我试过清理构建文件夹并重建,没有运气。有趣的是整个项目构建了几次,但在一些代码和 UI 更改之后它开始失败。即使我创建新项目,大约 5-6 次构建后也会发生同样的事情。
有没有其他人遇到这个错误?有关解决方案或解决方法的任何提示?
我正在尝试构建一个扩展项目,而 Xcode 不断在主题中抛出错误。
不用说,扩展的 bundle id以 app 的 bundle id为前缀。
产品名称: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 应用程序不是这种情况。由于此更改,一个问题是您实际上无法为 bundle identifier 生成应用程序 id com.mycompany.myappname.watchkitextension
。这不是必需的,只需将构建设置中的所有配置文件设置为自动,并且不要忘记为您的发布/临时/调试方案使用正确的代码签名证书。
我实际上发现这种方法有效,因为 Xcode 建议解决问题,这就是它所做的。
在构建之前尝试清洁。这为我解决了这个问题(Xcode 6b2)。
我做了如下改变:
主应用程序包 ID: com.myapp.testapp
和
扩展应用程序包 ID: com.myapp.testapp.myextension
及其作品!!!
我必须手动将扩展的 info.plist 中的 BundleID 更改为我需要的。
我提交了一个雷达:rdar://17487465
这对我有帮助:
扩展需要以父级的捆绑 ID 作为其前缀。
例如,如果您的应用程序是 com.ronnathan.myapp,那么您的扩展程序必须是 com.ronnathan.myapp.today。您重命名了应用程序目标,现在进入扩展目标并更改名称以匹配。
我遇到了同样的错误,你可能添加了一个像 Today 小部件这样的扩展,因为扩展本身也是一个二进制文件,所以它有自己的 plist,并确保在扩展的 plist 中,bundle id 以应用程序的 bundle id 为前缀。希望这可以帮助。
就我而言,当我更改应用程序包标识符时发生了此错误。我的项目中也有 WatchKit App。
要解决此问题,请将 WatchKit Extension 和 WatchKit App 包 ID 前缀更新为您应用的新包 ID。检查两个目标中的 info.plist。
还要更新以下内容 -
使用新的 Watch App bundle id 更新以下内容。WatchKit 扩展 > Info.plist - NSExtension->NSExtensionAttributes->WKAppBundleIdentifier
使用新的应用程序 ID 更新以下内容。WatchKit App > Info.plist - WKCompanionAppBundleIdentifier
更改所有值后,不要忘记清洁产品一次。
您可能已经复制了目标以执行克隆应用程序。例如,您选择了每个目标并复制它们。当您克隆 watchkit 扩展目标时,它的目标成员可能会自动分配给原始手表应用程序。
要解决此问题,您需要转到 Project Navigator 中的原始“WatchKit extension.appex”文件,并在 File Inspector 中为您的新克隆手表应用程序目标取消选择 Target Membership。您应该对重复的“Watchkit extension-copy.appex”执行相反的操作,并确保它仅在此处选择了重复的“watch app-copy”目标。
确保您的:
目标应用 A -> 构建设置 -> 代码签名 -> 发布
与以下内容相同:
目标应用 A(扩展)-> 构建设置-> 代码签名-> 发布
编译错误:嵌入式二进制文件的包标识符没有以父应用的包标识符为前缀
Extension App
id 应该扩展一个Containing App
id
//for example
//Extension App id
com.company
//Containing App id
com.company.extension
我尝试了这里给出的大多数解决方案,但它并没有帮助我解决 Xcode 9.4 中的问题
这个 SO Answer帮助我解决了这个问题。
我所做的只是
取消选中所有目标和项目的自动管理签名
在代码签名中,使其成为所有目标和项目的 iOS 开发人员。
清理项目,然后关闭项目并打开它。
现在启用目标的自动管理签名并选择开发者帐户。然后构建它。
它解决了我的错误。我不知道苹果什么时候会解决这些类型的问题。它吃了很多小时。
编辑:我也在使用这个答案,我的目标包 id是com.companyname.projectname和扩展包 id com.companyname.projectname.myextension
问题可能是您在将文件夹添加到项目时使用“创建文件夹引用”添加了一个文件夹(就像我一样)。@Jacob 的修复对我不起作用 :(
我不得不删除我添加到我的项目中的文件夹引用,然后清理并构建,这为我修复了它。
我遇到了同样的问题。将我的 WatchKit 扩展的 CFBundleIdentifier 更改为我第一次添加 WatchKit 扩展时使用的原始值以外的值,并重新设置我的共享应用程序组权利为我修复了它。
该解决方案已经包含在很多答案中:
包含 App Bundle ID:com.alphabet.gmail
和
扩展应用程序包 ID:com.alphabet.gmail.notificationServiceExtension
因为 Apple 希望应用程序之间的通信通过包含应用程序的 bundleId 进行,并避免开发人员不得不四处走动并向应用程序 Extension的 bundleID 发送消息。
例如,您的服务器必须发送一个名为apns-topic
向 APNS 发送推送通知的字段,以便应用程序可以下载图像。该主题的值是 bundleID。
但这不是服务扩展的捆绑 ID。它是主应用程序本身的 bundleId。
但是在实际的物理电话上,bundleIDs (com.alphabet.gmail.notificationServiceExtension
和com.alphabet.gmail
存在)。
我的理解是操作系统寻找一个目标:
com.alphabet.gmail
:Extension app bundle id:com.alphabet.gmail.notification
NSExtensionPointIdentifier
设置为com.apple.usernotifications.service
。你不应该触及这个值。这只是 Apple 预先定义的值。转到每个目标>构建设置>产品捆绑标识符>(重命名为任何内容)
确保 Extension 的包标识符以应用包标识符为前缀。如果它相同并且仍然给出错误,则转到扩展名的 .plist 文件并更改其捆绑标识符。
当我们开发手表应用程序时,该应用程序有 3 个目标关联。它们的目标必须具有以下样式的包标识符。
在监视目标的 info.plist 中,它必须有
WKCompanionAppBundleIdentifier = com.company.app
在 info.plist 中用于手表应用程序扩展,它必须有
NSExtension > NSExtensionAttributes > WKAppBundleIdentifier = com.company.app.watch
我只是清理派生文件夹,它在这些情况下对我有帮助。
这对我很有帮助:
我得到:
Xcode 找不到任何匹配的 iOS 应用程序开发配置文件
所以我将 Bundle Identifier 名称更改com.example.something
为com.example.something1
,然后清理构建。
确保你也更改了所有依赖的捆绑包 id..njoy !