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

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

【问题讨论】:

    标签: ios xcode


    【解决方案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 构建并上传到苹果。
    我所做的是:

    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});
      

    【讨论】:

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

      【讨论】:

        猜你喜欢
        • 2015-06-17
        • 2014-11-02
        • 1970-01-01
        • 1970-01-01
        • 2015-08-11
        • 2015-10-25
        • 1970-01-01
        • 1970-01-01
        • 2021-01-09
        相关资源
        最近更新 更多