5

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

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

经过大量阅读(包括这些问题)、重新阅读和谷歌搜索后,我可以这样说:

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

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

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

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

代码签名截图 http://img70.yfrog.com/img70/8988/codesign.png

4

7 回答 7

10

问题似乎是我在我的应用程序中使用了json-framework ,并按照 wiki 中的说明将其作为附加 SDK 包含在内。我的猜测是 XCode 因 >1 SDK 的存在而感到困惑,因此无法像预期的那样找到默认的 ResourceRules.plist。

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

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

我不确定这是否是 XCode 中的错误,还是 json-framework 有问题,但我已经针对后者提出了问题,以防万一。

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

于 2010-02-03T17:25:47.887 回答
1

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

于 2010-12-17T03:27:25.387 回答
0

你确定你是用一个发行版构建的,而不是开发、证书和移动配置?

于 2010-02-01T21:33:46.990 回答
0

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

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

于 2010-02-03T04:59:03.427 回答
0

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

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

于 2010-02-03T05:17:31.890 回答
0

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

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

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

于 2010-08-27T11:39:29.953 回答
0

对我来说,解决方案是在Apple Developer Provisioning Portal创建分发认证 。

于 2011-02-10T14:21:34.163 回答