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

Posted

技术标签:

【中文标题】错误 Itms-90339:此捆绑包无效。 info.plist 在应用程序包中包含无效键“CFBundleResourceSpecification”【英文标题】:Error Itms-90339: This bundle is invalid . The info.plist contains an invalid key 'CFBundleResourceSpecification’ in app bundle 【发布时间】:2015-09-10 14:15:09 【问题描述】:

我正在尝试在适用于 ios 9 的 iTunes 上上传我的应用程序。我使用 Xcode 7 beta 6 来构建我的 IPA,但 iTunes 未能通过以下错误消息上传我的 IPA .

【问题讨论】:

【参考方案1】:

Build Settings > Code Signing > Code Signing Resource Rules Path 下的项目设置 - 删除 Code Signing Resource Rules Path 的值。对我来说已解决的问题

【讨论】:

我看起来这行得通。但记得清理构建文件夹。 我遇到了同样的问题。我们有一些构建自动化软件在 Project.xcconfig 文件中设置此路径。评论了这一点,一切都建立和提交就好了。 //CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist 与 Cordova 有同样的错误。在文件platforms/ios/cordova/build.xcconfig 中注释掉CODE_SIGN_RESOURCE_RULES_PATH。解决了它 @mattv123 在没有CODE_SIGN_RESOURCE_RULES_PATH 的情况下,您是如何设法构建自动化软件的?我正在使用 Jenkins,当我删除 CODE_SIGN_RESOURCE_RULES_PATH 时出现代码签名错误。 删除值就ok了。但是itunes connece显示构建无效【参考方案2】:

我和李东辉是同一条船。我也在使用詹金斯。如果我删除 CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist 我将无法构建。如果我添加它,我可以构建但不能提交给 Apple。

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

    删除CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist

    找到/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", $optsign,
                      "--resource-rules=$destApp/ResourceRules.plist");
    

    改成:

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

【讨论】:

这对我帮助很大。我终于让我的 Jenkins buildscript 再次工作了。 这对我也有帮助,我觉得它应该是公认的答案,因为它更完整。 刚刚更新到 El Capitan (10.11 / XCode 7.0.1);正如预期的那样,需要重新应用相同的修复程序。 强烈建议不要修改 Xcode 内部文件。您需要能够验证 Xcode 的完整性并保持某种理智:(例如,请参阅 xcodeghost)。相反,不要依赖 jenkins 插件的打包工具,而是手动打包你的 .ipa。 (见我的回答)|K 这是一个黑客。 PackageApplication 已被弃用,由于其他原因停止工作可能只是时间问题。我也同意 kent 关于修改内部 XCode 文件的观点。正如Apple自己所说,真正的解决方案是使用xcodebuild -exportArchive -exportPlistOptions:***.com/questions/32763288/…【参考方案3】:

问题在于 Jenkins 的 Xcode 集成插件。 具体来说,构建详细信息窗格中有一个复选框,名为: “打包应用程序并构建.ipa?”

此功能将调用 设置了可选的“--embed”和“--sign”标志的“xcrun PackageApplication”。

在大多数情况下,您已经运行了 codesign,而且在大多数情况下,预置配置文件的嵌入是多余的。不幸的是插件的作者没有考虑到这一点,并且这两个可选参数无法通过jenkins插件的GUI进行配置。

解决办法:

请勿选择此选项!

这个选项有三个参数:

'.ipa 文件名模式':例如:MyApplication

'输出目录':例如:OUTPUT

'manifest plist URL'(我没用过这个...)

改为手动打包您的 .ipa 文件,方法是在构建后使用 GUI 的“pack”选项中的参数添加“execute shell”:

/bin/mkdir $(PWD)/build/OUTPUT    
/usr/bin/xcrun -sdk iphoneos PackageApplication -v $(PWD)/build/MyApplication.app -o $(PWD)/build/OUTPUT/MyApplication.ipa

【讨论】:

临时分发需要嵌入配置文件,不是吗? @JDL:是的。但在构建过程的这个阶段,配置文件已经嵌入。【参考方案4】:

如果您的语音 CFBundleResourceSpecification 为空,请检查您的 info.plist,如果您不需要它,请将其删除。

如果您需要它,那么您需要检查您在 构建设置Code Signing Resource Rules Path 下使用的值。

【讨论】:

面临同样的问题,我的 info.plist 中没有 CFBundleResourceSpecification 您的代码签名资源规则路径中有内容吗?检查构建设置下,如果它是空的,只需将其删除。 我在 Build Settings 中添加了 Code Signing Resource Rules Path 并从 iTunesConnect 得到了相同的 CFBundleResourceSpecification 错误。 :( @KaushalPanjwani 删除值就可以了。但是iTunes连接显示构建无效。如何解决问题。【参考方案5】:

当我使用 Jenkins 自动构建时,删除 CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist 会导致构建失败。但是通过 xcode 构建,它可以工作。

【讨论】:

【参考方案6】:

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

用 GM 或发布版本的工具试试吧。

【讨论】:

以上是关于错误 Itms-90339:此捆绑包无效。 info.plist 在应用程序包中包含无效键“CFBundleResourceSpecification”的主要内容,如果未能解决你的问题,请参考以下文章

错误 ITMS-90092:“此捆绑包无效...” [重复]

错误 ITMS-90060:“此捆绑包无效。键 CFBundleShortVersionString 的值

错误 ITMS-9000:“此捆绑包无效。Apple 目前不接受构建的应用程序

上传到 iOS App Store 时出错:错误 ITMS-9000 “此捆绑包无效”

此捆绑包无效。 Apple 目前不接受使用此版本 SDK 构建的应用程序

UIApplicationExitsOnSuspend 关键问题。我如何解决它?