无法将应用程序二进制文件上载到App Store

时间:2010-02-01 21:23:36

标签: iphone app-store itunesconnect

我们终于将我们的第一个iPhone应用程序提交到应用程序商店(或尝试),但我似乎无法让iTunes Connect接受上传。

我尝试过这两个网站(“您上传的二进制文件无效。签名无效,或者没有使用Apple提交的证书签名。”)和Application Loader(“Info.plist不会包含CFBundleResourceSpecification“)。

经过大量阅读(包括questions like these),重新阅读和谷歌搜索,我可以这样说:

  • 我确定捆绑包标识符与AppID匹配。
  • 有一个Icon.png,它是一个57x57像素的PNG文件,这是Info.plist中的确切名称。
  • 我正在做一个设备,而不是模拟器,构建。
  • 签名过程成功:构建结果显示此内容,正在运行codesign -vvvv MyApp.app表示没有问题。
  • ZIP文件的路径中没有奇怪的字符。
  • 我删除了build文件夹并重新构建了二次。

现在,在构建的应用程序中,Info.plist确实不包含CFBundleResourceSpecification键,但对于我来说,这个值应该来自哪里,或者我还需要什么,这一点都不清楚添加使这项工作。 (我使用Apple的搜索找到的唯一参考是code signing release notes ...但是,正如我上面提到的,代码签名步骤是成功的,据我所知。)

有没有人遇到过这个我尚未提及的问题的解释?

编辑:以下是构建代码签名步骤(稍微编辑)的输出,FWIW:

code signing screenshot http://img70.yfrog.com/img70/8988/codesign.png

7 个答案:

答案 0 :(得分:10)

问题似乎是我在我的应用中使用json-framework,并将其作为每the instructions in the wiki的额外SDK包含在内。我的猜测是XCode对> 1 SDK的存在感到困惑,因此找不到它应该的默认ResourceRules.plist。

我找到了两个解决方案(好的,解决方法,无论如何):

  1. 使用“代码签名资源规则路径”构建设置(默认情况下为空)指定XCode应使用的文件的路径:$(SDKROOT)/ResourceRules.plist。这是有效的,似乎相当无害,但在XCode应该能够自己解决这个问题的意义上令人沮丧。 (我在json-framework上的very old issue字段中找到了这个解决方案。)
  2. 请勿使用SDK方法。相反,只需将文件直接包含到项目中,然后使用本地路径更新#import语句。这是我最终采用的方法,因为我们做出了将所有外部依赖项折叠到项目本身的一般决策(以便其他开发人员在他们的计算机上进行的配置较少,以便启动和运行)。
  3. 我不确定这是否是XCode中的错误,或json-framework有什么问题,但我对后者filed an issue以防万一。

    更新,2010年6月30日:我提交的问题已经结束,Brautaset先生计划在项目的下一个版本(2.3)中删除对SDK选项的支持。此外,code now lives on GitHub虽然Google代码页目前仍然存在。

答案 1 :(得分:1)

对我来说,在检查完所有内容(代码签名,图标文件......)但无法上传应用程序后,请尝试删除内置文件。请记住复制file.app以压缩您的应用。

答案 2 :(得分:0)

您确定要使用分发构建,而不是开发,证书和移动设备吗?

答案 3 :(得分:0)

我假设您正在上传.zip文件。

我刚检查了我上传的应用,CFBundleResourceSpecification仅在签名版本中(即设备版本)。

答案 4 :(得分:0)

您是否正在从命令行进行任何构建/复制/压缩?如果是这样,你必须非常小心符号链接。 .app带有一个子目录作为另一个的符号链接,如果你复制它或没有正确的标记拉链,它将硬拷贝内容,这与代码签名混淆。

这件事发生在我身上 - 最糟糕的是,ad-hoc版本在没有符号链接的情况下工作正常,所以在应用商店构建之前你不会注意到这个问题。

答案 5 :(得分:0)

此消息可能由于其他原因而发生(正如我刚刚在今天早上发现的那样):如果您的项目中有多个Info.plists,则应用程序上传程序可能会发现“错误的”Info.plist并感到困惑。

这发生在我身上,因为构建的自动部分是在项目中创建了一个Info.plist。

提示解决方案: http://infinite-sushi.com/2010/08/the-case-of-the-missing-cfbundleresourcespecification/

答案 6 :(得分:0)

对我而言,解决方案是在以下位置创建分发认证: Apple Developer Provisioning Portal