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

Posted

技术标签:

【中文标题】无法将应用程序二进制文件上传到 App Store【英文标题】:Can't upload application binary to the App Store 【发布时间】:2010-02-01 21:23:36 【问题描述】:

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

我已经尝试通过网站(“您上传的二进制文件无效。签名无效,或者它没有使用 Apple 提交证书签名。”)和应用程序加载器(“Info.plist 没有包含一个 CFBundleResourceSpecification")。

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

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

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

有没有人遇到过我没有提到的这个问题的任何解释?

编辑:这是构建的代码签名步骤 FWIW 的(略微编辑的)输出:

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

【问题讨论】:

您之前可以上传任何内容吗?你确定你的证书都是有效的并且没有过期吗? 另外,你确定你正在为 3.1.2 构建而不是说 3.2 beta? @fbrereto 这是我们提交的第一个应用程序。分发配置文件肯定没有过期。 (我希望如果证书无效,构建的协同设计步骤不会是绿色的。) @Tegeril 尚未安装测试版。为 3.1.2 构建,部署目标设置为 3.0。 【参考方案1】:

问题似乎是我在我的应用程序中使用了json-framework,并将其作为the instructions in the wiki 的附加SDK 包含在内。我的猜测是 XCode 被 >1 SDK 的存在弄糊涂了,因此无法像它应该的那样找到默认的 ResourceRules.plist。

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

    使用“代码签名资源规则路径”构建设置(默认为空白)指定 XCode 应使用的文件的路径:$(SDKROOT)/ResourceRules.plist。这行得通,似乎相当无害,但令人沮丧的是 XCode 应该能够自己解决这个问题。 (我在 json-framework 上提交的 very old issue 中找到了这个解决方案。) 不要使用 SDK 方法。相反,只需将文件直接包含到项目中,并使用本地路径更新 #import 语句。这是我最终采用的方法,因为我们做出了一个总体决定,将所有外部依赖项折叠到项目本身中(这样其他开发人员就可以在他们的机器上进行更少的配置来启动和运行)。

我不确定这是 XCode 中的错误,还是 json-framework 有问题,但我在后者上使用了 filed an issue,以防万一。

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

【讨论】:

我太爱你了。刚遇到同样的问题,我的头撞了将近一个小时。我还安装了 Xcode 3.2.2 beta,因此开始考虑重新安装所有版本。你统治! 我使用的 core-plot SDK 有一个非常相似的问题。如上所述设置“代码签名资源规则路径”可以解决我的问题。非常感谢。【参考方案2】:

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

【讨论】:

【参考方案3】:

您确定您是使用发行版构建,而不是开发、证书和移动配置?

【讨论】:

是的。代码签名身份设置为我们的分发配置文件,代码签名构建步骤显示正确的配置文件名称。【参考方案4】:

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

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

【讨论】:

我在为 App Store 分发创建 .mobileprovision 文件时处于相同的过程中,设备部分显示为灰色我无法选择任何内容,这是为什么呢?【参考方案5】:

您是否正在从命令行进行任何构建/复制/压缩?如果是这样,您必须非常小心符号链接。 .app 带有一个子目录作为指向另一个子目录的符号链接,如果您在没有正确标志的情况下复制或压缩它,它将硬复制内容,这会与代码设计混淆。

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

【讨论】:

通过 XCode 进行所有构建,并尝试从命令行和(通常)通过 Finder 的压缩菜单选项进行压缩。 (我看到很多讨论都提到了符号链接问题。)【参考方案6】:

这个消息可能有另一个原因(正如我今天早上刚刚发现的那样):如果您的项目中有多个 Info.plist,应用程序上传器可能会发现“错误”的 Info.plist 并感到困惑。

这发生在我身上,因为构建的自动化部分是在引入项目的包中创建 Info.plist。

提示到这里以获得解决方案: http://infinite-sushi.com/2010/08/the-case-of-the-missing-cfbundleresourcespecification/

【讨论】:

【参考方案7】:

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

【讨论】:

这当然是向 App Store 提交 任何内容 的必要步骤,但也是一个预期且有据可查的步骤。不是造成这里最初混乱的原因。

以上是关于无法将应用程序二进制文件上传到 App Store的主要内容,如果未能解决你的问题,请参考以下文章

无法将应用上传到 App Store 连接

我的体验 iPhone 应用程序二进制文件上传到 APP STORE

尝试将应用程序上传到 Mac App Store,二进制文件无效?

上传到 App Store 时二进制文件无效

将新应用程序上传到 App Store

尝试将应用程序上传到 App Store 时获取 ITMS-4238“冗余二进制上传”