我正在尝试构建一个扩展项目,Xcode不断将错误抛给主题。
无论何时,扩展程序的附件ID 都以app的捆绑ID为前缀。
产品名称:ro.chitza.TodayPics.$(TARGET_NAME:rfc1034identifier
我已经尝试清理构建文件夹并重建,没有运气。有趣的是,整个项目已经构建了几次,但在一些代码和UI更改后,它开始失败。即使我创建了新项目,在5-6次构建之后也会发生同样的事情。
有没有其他人遇到此错误?有关解决方案或解决方法的任何提示吗?
答案 0 :(得分:31)
在构建之前尝试清理。这解决了我的问题(Xcode 6b2)。
答案 1 :(得分:29)
当WatchOS 2到达时,看起来捆绑ID行为已经改变。
以前我有一个扩展包标识符,如下所示:
com.mycompany.myappname.watchkitapp.watchkitextension
Stackoverflow上的其他地方有人提到扩展包标识符应该采用这种格式,但无论我尝试了什么,Xcode都会向我抛出错误。
唯一可行的解决方案是将扩展束标识符更改为:
com.mycompany.myappname.watchkitextension
我很确定这不是WatchOS 1应用程序的情况。由于此更改而导致的问题是,您实际上无法为包标识EXPath packages that incorporate Java libraries may no longer work with eXist 3.0 and may need to be recompiled for our API changes; packages should now explicitly specify the eXist versions that they are compatible with.
生成应用ID。这不是必需的,只需将构建设置中的所有配置文件设置为自动,并且不要忘记为发布/ ad-hoc /调试方案使用正确的代码签名证书。
我实际上发现这种方法有效,因为Xcode建议修复问题,这就是它所做的。
答案 2 :(得分:17)
我做了如下修改:
主要应用包ID: com.myapp.testapp
和
扩展应用包ID: com.myapp.testapp.myextension
及其作品!!!
答案 3 :(得分:14)
我不得不手动将扩展名的info.plist中的BundleID更改为我需要的内容。
我提交了雷达:rdar:// 17487465
答案 4 :(得分:12)
扩展程序需要将父ID的包ID作为其前缀。
例如,如果您的应用是com.ronnathan.myapp,那么您的扩展名必须是com.ronnathan.myapp.today。您重命名了应用目标,现在进入扩展目标并更改名称以匹配。
答案 5 :(得分:8)
答案 6 :(得分:4)
我遇到了同样的错误,您可能会添加像今日小部件一样的扩展程序,因为扩展程序本身也是一个二进制文件,因此它有自己的plist,并确保在扩展程序的plist中,包ID以app&为前缀#39;捆绑ID。希望这会有所帮助。
答案 7 :(得分:4)
在我的情况下,当我更改应用程序包标识符时发生此错误。我的项目中也有WatchKit App。
要解决此问题,请使用应用的新捆绑ID更新WatchKit Extension和WatchKit App捆绑包ID前缀。检查两个目标中的info.plist。
同时更新以下内容 -
使用新的Watch App捆绑包ID更新以下内容。 WatchKit Extension> Info.plist - NSExtension-> NSExtensionAttributes-> WKAppBundleIdentifier
使用新的应用ID更新以下内容。 WatchKit App> Info.plist - WKCompanionAppBundleIdentifier
更改所有值后,不要忘记清洁产品一次。
答案 8 :(得分:3)
您可能碰巧复制了目标以执行克隆应用。例如,您选择了每个目标并复制它们。当您克隆watchkit扩展目标时,其目标成员资格可以自动分配给原始监视应用程序。
要解决此问题,您需要在Project Navigator中找到原始的“WatchKit extension.appex”文件,并取消选择File Inspector中的Target Membership作为新克隆监视应用目标。您应该对重复的“Watchkit extension-copy.appex”执行相反的操作,并确保它只在那里选择了重复的“watch app-copy”目标。
答案 9 :(得分:2)
答案 10 :(得分:2)
确保你的:
目标应用A - >内置设置 - >代码签名 - >释放
与:
相同目标应用A(扩展) - >内置设置 - >代码签名 - >释放
答案 11 :(得分:1)
我尝试了此处给出的大多数解决方案,但并没有帮助我解决Xcode 9.4中的问题
This SO Answer帮助我解决了这个问题。
我所做的只是
取消选中所有目标和项目的自动管理签名
通过代码签名使它成为所有目标和项目的iOS Developer。
清洁项目,然后关闭项目并打开它。
现在启用对目标的自动管理签名并选择开发者帐户。然后建立它。
它解决了我的错误。我不知道苹果何时会解决这些问题。它要花很多时间。
编辑:我也使用This answer,我的目标捆绑包ID 是 com.companyname.projectname ,而扩展捆绑包ID < / strong> com.companyname.projectname.myextension
答案 12 :(得分:0)
Extension App
id 应该扩展一个 Containing App
id
//for example
//Extension App id
com.company
//Containing App id
com.company.extension
答案 13 :(得分:0)
该解决方案已经包含了很多答案:
包含应用捆绑包ID:com.alphabet.gmail
和
扩展应用程序捆绑包ID:com.alphabet.gmail.notificationServiceExtension
因为Apple希望应用程序之间的通信通过包含应用程序的bundleId来避免,开发人员不必四处走动并将消息发送到应用程序扩展程序的bundleID 。
例如,您的服务器必须发送一个名为apns-topic
的字段才能向APNS发送推送通知,以便该应用可以下载图像。该主题的值是bundleID。
但这不是服务扩展的捆绑软件ID。它是主应用程序本身的bundleId。
但是,在实际的物理电话上,两个bundleID(com.alphabet.gmail.notificationServiceExtension
和com.alphabet.gmail
都存在)。
我的理解是,操作系统正在寻找一个目标:
com.alphabet.gmail
前缀的 的BundleId,例如:扩展应用程序捆绑包ID:com.alphabet.gmail.notification
NSExtensionPointIdentifier
设置为com.apple.usernotifications.service
。您不应触摸此值。这只是Apple的预定义值。 答案 14 :(得分:0)
当我们开发手表应用程序时,有3个与该应用程序相关的目标。他们的目标必须具有以下样式的包标识符。
在观看目标的info.plist中,它必须具有
WKCompanionAppBundleIdentifier = com.company.app
并在info.plist中用于观看应用扩展程序,它必须具有
NSExtension> NSExtensionAttributes> WKAppBundleIdentifier = com.company.app.watch
答案 15 :(得分:0)
确保Extension的bundle标识符以app bundle标识符为前缀。 如果相同且仍然给出错误,则转到Extension的.plist文件并更改其Bundle Identifier。
答案 16 :(得分:0)
这对我很有帮助:
我得到了:
Xcode找不到匹配的任何iOS App Development配置文件
所以我将Bundle Identifier名称更改为com.example.something
到com.example.something1
,然后清除了构建。
确保您也更改了所有依赖的捆绑包ID .njoy !!
答案 17 :(得分:0)
转到每个目标&gt;构建设置&gt;产品包标识符&gt; (重命名为)
答案 18 :(得分:0)
我只是清理派生文件夹,它可以帮助我解决这些问题。
答案 19 :(得分:0)
我遇到了同样的问题。将我的WatchKit扩展的CFBundleIdentifier更改为我第一次添加WatchKit扩展时使用的原始值以外的其他值,并重新设置我的共享应用程序组权限,为我修复了它。
答案 20 :(得分:0)
只需从〜/ Library / MobileDevice / Provisioning Profiles中删除应用程序配置文件,重新加载Xcode并在Xcode提示时解决问题(或从iOS开发中心手动下载)。
为我解决了这个问题。
答案 21 :(得分:0)
问题可能是您在将项目添加到项目时使用“创建文件夹引用”添加了一个文件夹(就像我一样)。 @ Jacob的修复对我不起作用:(
我必须删除我添加到项目中的文件夹引用,然后清理并构建,并为我修复它。