您上传的二进制文件无效。签名无效或未使用苹果提交证书进行签名。

4
您上传的二进制文件无效。签名无效或未使用苹果提交证书进行签名。
收到此错误消息... 已经2天了... 尝试了所有的谷歌搜索... 但它仍然存在。

一个建议 - 或许尝试勾选“稍后上传”复选框,使用苹果的独立Cocoa上传器。有时候这样会更好。此外,如果上传失败,它有时会在OS X Console.app中留下信息。 - Hunter
4
我投票关闭此问题,因为[我们不是您最喜欢公司的客户支持]。 - Machavity
6个回答

13

经过两天的解决,我发现问题的解决方法是确保没有两个只有大小写不同的文件。因此,在应用程序中同一目录下的Foo.png和foo.png将导致此错误。

以下是我在这两天从不同网站收集的需要检查的内容:

  • 检查构建日志的最后几个步骤“ProcessingProductPackaging”和“CodeSign”
  • 确保您没有意外包含任何.svn目录或类似的目录
  • 确保您在项目设置中为发布模式选择了正确的分发配置文件,并且没有被目标设置覆盖
  • 在你的pbxproj文件中,检查Release模式下的PROVISIONING_PROFILE和CODE_SIGN_IDENTITY行,或者删除它们并在项目设置中再次设置正确的配置文件
  • 使用Finder的压缩而不是终端的zip命令
  • 检查codesign -vvvv MyApp.app的输出
  • 检查codesign -dvvvv MyApp.app的输出
  • 检查codesign --verify -vvvv -R='anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.1] exists and certificate leaf[field.1.2.840.113635.100.6.1.4] exists' MyApp.app的输出
  • 如果使用Safari上传不起作用,请尝试Firefox
  • 图标必须为57x57
  • 使用应用程序上传器获取更详细的错误消息
  • 在您上传的zip文件路径中,任何位置都不能有空格或特殊字符
  • 检查您的钥匙串:是否有与私钥关联的分发证书?
  • 确保构建时将Active SDK设置为设备而不是模拟器
  • 使用“显示内容”打开.app文件,检查它是否包含一个带有您分发配置文件UUID的embedded.mobileprovision文件和一个_CodeSignature文件夹内部的CodeResources
  • 确保您捆绑标识符与AppID匹配。对于AppID XYZ.com.mycompany.*,有效的捆绑标识符是com.mycompany.myappname
  • 使用Mac Extended文件系统进行构建,而不是fat32
  • 尝试从XCode中删除配置文件、清空缓存(XCode 菜单 -> 清空缓存),重新启动XCode,并再次添加该配置文件

  • 5
    如果您按照http://developer.apple.com/iphone/manage/distribution/index.action中的说明进行操作,那么我可以列出以下可能导致此错误的原因:
    • 用于签名的证书/密钥/预配文件不正确
    • 证书已过期
    • 压缩包已损坏(如果不按照说明制作zip文件,则其中包含的一些符号链接将会损坏)
    • 您的应用程序包中有entitlements.plist文件

    2
    升级到Xcode 4后,“Scheme”配置中的发布版本和发行版本混淆了。我通过以下方式解决了这个问题:
    1. 在Xcode 4中,转到“Product”>“Manage Schemes…”
    2. 选择目标/方案,按“Edit”按钮
    3. 选择“Archive”操作
    4. 将“Build Configuration”从“Release”更改为“Distribution”
    上传到iTunes Connect后,我收到了“无效二进制”和“无效签名”的消息。我检查了我的证书、证书和其他构建设置,并找不到问题所在。猜测我的归档方案是设置为构建发布版本而不是分销版本。非常烦人!

    1
    我通过向我的 entitlements plist 文件中添加两个新的密钥 - application-identifier 和 keychain-access-groups 来解决了这个问题。
    <plist version="1.0">
    <dict>
        <key>application-identifier</key>
        <string>T9YRD11G97.com.duncancampbell.fontagious</string>
        <key>get-task-allow</key>
        <true/>
        <key>keychain-access-groups</key>
        <array>
            <string>T9YRD11G97.com.duncancampbell.fontagious</string>
        </array>
    </dict>
    </plist>
    

    我从配置文件的AppID中获取了"T9YRD11G97",从iTunesConnect的BundleID中获取了"com.duncancampbell.fontagious"。

    希望这可以帮到你。


    0

    这个过程可能会非常令人沮丧。很抱歉你已经花了两天时间,但听起来你已经接近成功了。

    继Lauri的回复后,您是否验证了“验证成功分发构建”部分中的信息,以构建应用程序进行分发的说明?

    具体来说,请检查您是否在构建中包含了正确的“embedded.mobileprovision”文件,并验证应用程序是否使用了正确的证书签名。


    我尝试了你建议的所有方法,但仍然不起作用。 - jmj
    请在“codeSign”和“embedded.mobileprovision”的构建转录输出中包含。这将使我们能够更具体地帮助您。如果没有这个,我们只是提出一般性的建议。另外,您是否尝试过Hunter上面的建议,尝试使用应用程序上传器? - Bart Gottschalk
    已经查阅了几乎所有论坛,最终解决了。 - jmj
    问题是开发者配置文件已配置。 - jmj

    0
    对我来说,导致无效签名错误的原因是项目名称中的一个空格。当我检查构建日志时,我查看了涉及分发证书的行,并发现文件路径中有一个空格。移除项目名称中的空格就解决了这个问题,希望这能为某些人节省很多麻烦。

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