我正在尝试构建扩展项目,而Xcode不断在主题中抛出错误。
不用说,该扩展程序的捆绑软件ID会以应用程序的捆绑软件ID为前缀。
产品名称:ro.chitza.TodayPics.$(TARGET_NAME:rfc1034identifier
我试过清理build文件夹并重建,没有运气。 有趣的是,整个项目构建了几次,但是在对代码和UI进行一些更改之后,它开始失败。 即使创建新项目,大约5到6个构建之后,同样的事情也会发生。
还有其他人遇到此错误吗? 有解决方案或解决方法的提示吗?
在构建之前尝试清理。这为我解决了这个问题(Xcode 6b2)。
Xcode 6b2解决了问题,构建很好。只是在启动应用程序时崩溃:)
运行清理解决了我类似的问题;就我而言,它抱怨捆绑标识符不是嵌入式应用程序的子集。
这也解决了我的问题。
@chitza明确表示:"我曾经尝试清理过build文件夹并进行重建,没有运气。"我也遇到了chitzas问题,并且无法通过Xcode 9.3修复该问题。
建议删除DerivedData,然后清理。步骤如下:Xcode文件->工作区设置->单击直接按钮(仅在高级按钮上方)转到/ Users / {YourName} / Library / Developer / Xcode / DerivedData->删除DerivfedData下面的所有内容
当WatchOS 2到货时,捆绑包ID行为似乎已更改。
以前我有一个扩展束标识符,如下所示:
com.mycompany.myappname.watchkitextension
在Stackoverflow上的其他地方,提到了扩展束标识符应采用这种格式,但是无论我尝试了什么,Xcode都会不断向我抛出错误。
唯一可能的解决方案是将扩展束标识符更改为:
com.mycompany.myappname.watchkitapp.watchkitextension
我很确定WatchOS 1应用程序不是这种情况。由于此更改而导致的问题是,您实际上无法为捆绑包标识符com.mycompany.myappname.watchkitextension生成应用程序ID。这不是必需的,只需将构建设置中的所有供应配置文件设置为自动,并且不要忘记为您的发布/临时/调试方案使用正确的代码签名证书。
我实际上发现这种方法行之有效,因为Xcode建议解决此问题,而这就是它的作用。
我尝试了此操作,但是由于无法获取配置文件配置文件的权限,因此我无法提交给itunesconnect,因为该配置文件没有与我的watchkit扩展配置文件相关的应用程序组的权限,该配置文件具有以前的捆绑包ID(com.mycompany.myname.watchkitextension) ...我们如何解决此问题并成功提交给intunesconnect?
同样的问题在这里..是否有修复程序?
它也解决了我的问题,谢谢,这与第一次watchOS不一样
非常适合我的iOS应用小部件/手表扩展,非常感谢!
我进行了如下更改:
主应用程序捆绑包ID:com.myapp.testapp
和
扩展应用程序捆绑包ID:com.myapp.testapp.myextension
和它的作品!
对于主应用程序和扩展应用程序,我们是否需要具有两个包ID和两个不同的配置文件?或仅对主应用程序有一个捆绑包标识符,然后通过将.whateverextension附加到主应用程序捆绑包ID来对扩展应用程序使用相同的标识符?
是的,Ganesh,如果应用程序具有推送通知功能或需要唯一标识符,则我们需要为主应用程序和扩展应用程序提供两个不同的配置文件。
我必须手动将扩展程序的info.plist中的BundleID更改为所需的内容。
我提起雷达:rdar:// 17487465
我们的构建成功完成了这一更改。我们的info.plist文件中的BundleId为${PRODUCT_NAME}。因此,对于OP的示例,请在扩展名info.plist文件中,将ro.chitza.TodayPics.$(TARGET_NAME:rfc1034identifier)用作BundleId。
我爱你雅各布=)
@SushiGrass Jacob(Y)
这帮助了我:
该扩展名必须具有父级的捆绑软件ID作为其前缀。
例如,如果您的应用程序是com.ronnathan.myapp,则扩展名必须是com.ronnathan.myapp.today。您已重命名了应用程序目标,现在进入扩展目标并更改名称以使其匹配。
从这里取
Target-> General-> Embedded Binaries删除旧版本并选择新版本,这就是我解决此问题的方法
在Watch App Target上进行上述更改。
我遇到了同样的错误,您可能添加了一个扩展,例如Today小部件,因为该扩展本身也是一个二进制文件,因此它具有自己的plist,并确保在扩展的plist中,捆绑包ID前缀为应用程序的捆绑包ID。希望这可以帮助。
不幸的是,这没有帮助。我已经说明了它的扩展名("我正在尝试构建扩展项目"),并且捆绑包ID是正确的("直到今天,扩展捆绑包ID都以应用程序捆绑包ID为前缀")。
我的扩展程序与该应用程序具有完全相同的ID,您是否尝试过清理项目?或删除派生数据?
是的,我确实做到了,但是不幸的是它没有解决问题:"我曾经尝试清理过构建文件夹并重建,没有运气。"
就我而言,当我更改应用程序捆绑包标识符时发生了此错误。我的项目中也有WatchKit App。
要解决此问题,请使用您应用的新捆绑包ID更新WatchKit Extension和WatchKit App捆绑包ID前缀。检查两个目标中的info.plist。
同时更新以下内容-
使用新的Watch App捆绑包ID更新以下内容。
WatchKit扩展> Info.plist-NSExtension-> NSExtensionAttributes-> WKAppBundleIdentifier
使用新的应用程序ID更新以下内容。
WatchKit应用> Info.plist-WKCompanionAppBundleIdentifier
更改所有值后,别忘了清洁产品一次。
是的,这就是它显示该错误的原因。
您可能已经复制了目标以执行克隆应用程序。例如,您选择了每个目标并复制了它们。克隆您的watchkit扩展目标时,其目标成员资格可能会自动分配给原始watch应用。
要解决此问题,您需要在Project Navigator中转到原始的" WatchKit extension.appex"文件,并在File Inspector中取消选择" Target Membership"作为新的克隆监视应用程序目标。您应该对重复的" Watchkit extension-copy.appex"执行相反的操作,并确保仅在其中选择了重复的" watch app-copy"目标。
确保您的:
目标应用A->内置设置->代码签名->发布
与以下内容相同:
目标应用程序A(扩展名)->内置设置->代码签名->发布
我尝试了此处给出的大多数解决方案,但并没有帮助我解决Xcode 9.4中的问题
这样的回答可以帮助我解决问题。
我所做的只是
取消选中所有目标和项目的自动管理签名
在代码签名中,使其成为所有目标和项目的iOS Developer。
清理项目,然后关闭项目并打开它。
现在,为目标启用"自动管理签名"并选择开发者帐户。然后建立它。
它修复了我的错误。我不知道苹果何时会解决这些问题。它要花很多时间。
编辑:我也使用此答案,那我的目标捆绑包ID是com.companyname.projectname和扩展捆绑包ID com.companyname.projectname.myextension
我只是清理派生文件夹,在这种情况下它对我有帮助。
转到每个目标>构建设置>产品捆绑包标识符>(重命名为任意名称)
我有一个包含多个项目的工作区。使用Xcodes搜索功能和"构建设置"搜索功能,我能够找到每个需要更改的实例。工作完美!
我遇到了同样的问题。将WatchKit扩展程序的CFBundleIdentifier更改为我首次添加WatchKit扩展程序时使用的原始值以外的其他值,并重新设置共享的应用程序组权利为我修复了该问题。
更改捆绑软件ID是可以的...但是我的watchkit扩展配置配置文件具有旧的捆绑软件ID,因此我无法使用新的捆绑软件ID将我的应用提交到itunesconnect,因为没有配置文件支持应用程序组,我遇到了错误。您如何重置您的共享组权利?
只需从?/ Library / MobileDevice / Provisioning Profiles中删除应用程序配置文件,重新加载Xcode并在Xcode提示时修复问题(或从iOS开发中心手动下载它们)。
为我解决了这个问题。
我按照你的解决方案。但发生相同的错误。在xcode 6.0.1和ios 8.0.2中运行
问题可能是您在将文件夹添加到项目中时使用"创建文件夹引用"添加了一个文件夹(就像我一样)。 @Jacob的修复不适用于我:(
我必须删除添加到项目中的文件夹引用,然后进行清理和构建,并为我修复了该问题。
这对我很有帮助:
我得到:
Xcode couldn't find any iOS App Development provisioning profiles matching
因此,我将捆绑包标识符名称(即com.example.something更改为com.example.something1),然后清理了构建。
确保同时更改所有从属包的ID。.njoy!
确保扩展的捆绑包标识符以应用捆绑包标识符为前缀。
如果相同但仍给出错误,则转到Extension的.plist文件并更改其Bundle Identifier。