错误Itms-90339:此捆绑包无效。应用程序捆绑包中的info.plist包含一个无效的键“CFBundleResourceSpecification”。

44
我正试图将我的应用程序上传到适用于iOS 9的iTunes。我使用Xcode 7 beta 6构建了我的IPA文件,但是iTunes上传失败,显示以下错误信息:enter image description here
6个回答

94

在“Build Settings” > “Code Signing” > “Code Signing Resource Rules Path”下的项目设置中,删除“Code Signing Resource Rules Path”的值。这对我解决了问题。


我看起来好像正常工作了。但记得清理构建文件夹。 - ant_one
3
我遇到了同样的问题。我们有一些构建自动化软件在Project.xcconfig文件中设置了这个路径。将其注释掉后,一切都成功地构建和提交了。 //CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist - mattv123
2
在 Cordova 中遇到了相同的错误。在文件 platforms/ios/cordova/build.xcconfig 中注释掉 CODE_SIGN_RESOURCE_RULES_PATH。问题解决了。 - StarQuake
3
@mattv123,你是如何让自动化软件在没有CODE_SIGN_RESOURCE_RULES_PATH的情况下构建的?我正在使用Jenkins,在删除CODE_SIGN_RESOURCE_RULES_PATH时出现了代码签名错误。 - Hlung
删除该值是可以的。但是iTunes连接显示构建无效。 - Jieson Five
请查看 @MikeVosseller 关于 SO 32763288 的回答,获取正确定解决方案。 - Litome

57

我和李东辉一样,也在使用Jenkins。如果我删除 CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist,我将无法构建。而如果我添加了它,我可以构建但无法提交给Apple。

更新 -> 我现在可以使用Jenkins构建并上传到苹果。
我所做的是:

  1. 删除 CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist
  2. 找到位于脚本中的包括以下代码的行:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication 并更新它。

my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
                  "--sign", $opt{sign},
                  "--resource-rules=$destApp/ResourceRules.plist");

将其更改为:

my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
                  "--sign", $opt{sign});

2
这对我帮助很大。我终于让我的Jenkins构建脚本再次工作了。 - Tobiaswk
这也帮助了我,我觉得它应该被接受为答案,因为它更完整。 - Tristian
1
刚刚升级到El Capitan(10.11 / XCode 7.0.1);如预期所料,需要重新应用相同的修复程序。 - Sandro Gržičić
5
强烈不建议修改Xcode内部文件。您需要能够验证Xcode的完整性并保持某种健康状态 (例如,请参见xcodeghost)。相反,不要依赖Jenkins插件的打包工具,手动打包您的.ipa文件。(请查看我的答案) - kent
4
这是一个黑客技巧。 PackageApplication 已经被弃用,它很可能只是时间问题,因为它将停止工作,并出现其他问题。我也同意 kent 修改内部 XCode 文件的做法。苹果公司自己提出了真正的解决方案,即使用 xcodebuild -exportArchive -exportPlistOptions:https://dev59.com/XFwY5IYBdhLWcg3wU2XA#32845990 - Ohad Schneider
显示剩余3条评论

5
问题出在Jenkins的Xcode集成插件上。 具体来说,构建详细信息面板中有一个名为“打包应用程序并生成.ipa文件?”的复选框。
此功能将使用可选的'--embed'和'--sign'标志调用'xcrun PackageApplication'命令。
在大多数情况下,您已经运行了codesign,并且在大多数情况下,嵌入配置文件是多余的。不幸的是,插件的作者没有考虑到这一点,并且这两个可选参数不能通过jenkins插件的GUI进行配置。
解决方案:
不要选择此选项!
此选项有三个参数:
- '.ipa文件名模式':例如:MyApplication - '输出目录':例如:OUTPUT - '清单plist URL'(我没有使用过...)
相反,通过在构建后添加“执行shell”并使用与GUI“打包”选项中相同的参数手动打包您的.ipa文件:
/bin/mkdir $(PWD)/build/OUTPUT    
/usr/bin/xcrun -sdk iphoneos PackageApplication -v $(PWD)/build/MyApplication.app -o $(PWD)/build/OUTPUT/MyApplication.ipa

Adhoc分发需要嵌入配置文件,是吗? - JDL
@JDL:是的。但在构建过程的这个阶段,预配配置文件已经被嵌入。 - kent

2

请在您的 info.plist 中检查是否有空的声音CFBundleResourceSpecification,如果不需要,请将其删除。

如果您需要它,请检查您在构建设置中使用的值Code Signing Resource Rules Path


2
我也遇到了同样的问题,而且我的info.plist中没有CFBundleResourceSpecification - Kaushal Panjwani
1
你的代码签名资源规则路径里有东西吗?在构建设置下检查一下,如果为空就删除它。 - Massimo Polimeni
我在构建设置中添加了“代码签名资源规则路径”,但在iTunesConnect中仍然收到相同的“CFBundleResourceSpecification”错误。 :( - Hlung
@KaushalPanjwani 删除数值没问题。但是iTunes Connect显示构建无效。如何解决这个问题? - Jieson Five

0

使用开发者工具测试版构建的应用无法提交到iTunes Connect。

请尝试使用GM版或发布版的工具进行构建。


0

由于我使用Jenkins进行自动构建,移除CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist会导致构建失败。但是在使用Xcode构建时,它可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接