Info.plist中的CFBundleVersion上传错误

时间:2011-02-08 12:38:40

标签: objective-c upload plist cfbundleidentifier

  

“您上传的二进制文件无效。密钥CFBundleVersion中的   Info.plist文件必须包含比版本更高的版本   以前上传的版本。“

当我上传我的应用程序时,我收到此错误。

我在iTunes Connect上将更新版本设置为1.2,并且还将.plist文件更新为1.2。

我不明白为什么我会收到此错误。任何帮助,将不胜感激。感谢。

30 个答案:

答案 0 :(得分:207)

Apple的上传服务器中至少有一个已知错误,他们已经修复超过12个月。需要注意的事项:

  1. Apple删除版本号内的任何前导零;即,“整个字符串”不被视为数字,而是将点之间的位视为单独的数字。例如Apple将“1.02”视为“1.2”。因此,对于Apple来说,1.02大于1.1
  2. Apple有时会感到“困惑”,似乎会将您上传的应用与您之前上传的不同应用的版本进行比较。它发生在很多人身上,我自己也见过几次
  3. Apple应该比较“CFBundleVersion”(即“Bundle版本”而不是“Bundle versions string,short”);不要混淆。
  4. 通常情况下,唯一可行的解​​决方案是撞到前面的数字(例如“2.4”中的“2” - 将其增加到“3”)
  5. 您上传的版本号与iTunes中显示的版本号无关 - 您可以在此处放置任何内容,这就是您的用户将看到的内容
  6. ...除非,如果您还在应用程序中报告“实际”版本号,用户将看到CFBundleVersion(通常,取决于您如何编码),而不是iTunes版本(我认为 - 不能可从您的应用内部访问)

答案 1 :(得分:29)

更新内部版本号。版本号很重要,但构建号会产生重大影响。例如,我的应用程序的初始版本为:

version #: 1.0
build #:   1.0

然而,当我尝试上传下一个版本时,即

version #: 1.1
build #:   1.0

它不接受上传。只需将构建#增加到1.1即可接受上传。

答案 2 :(得分:9)

如果您不重新归档应用程序,Xcode 4会认为您要重新上传相同的版本。即使您更改Bundle版本并重建,上传也将失败。请务必在“产品”菜单中执行“存档”!

答案 3 :(得分:7)

这里的许多答案最终帮助了我,但直到我看到确切的"版本" Apple正在比较的数字。

  1. 转到iTunes Connect - >管理您的应用程序
  2. 选择要检查以前版本的应用程序
  3. 点击标有查看详细信息
  4. 的蓝色按钮
  5. 点击标有二进制详细信息
  6. 的链接
  7. 找到 Bundle Version
  8. 的值

    即使我认为我提交了版本号1.0.1,Apple存储的实际数字是101.上面的一些评论让我相信我需要将我的版本更改为2.0(20)或1.5(15)或1.2(12) - 如你所见,这些都小于101。更新我的版本号102(没有点)修复了问题。

答案 4 :(得分:6)

This article指出应用商店中看到的版本号不一定与捆绑版本号相同。当您在iTunes中查看应用程序的详细信息时,会出现名为“二进制详细信息”的链接。该页面显示了捆绑包版本。我正在处理的其中一个应用程序是1.0版,但它的捆绑版本是2.0。使用1.1版上传捆绑包失败,但2.1确实有效。

所以,有一个应用版本和一个捆绑版本。此问题与捆绑版本有关。

答案 5 :(得分:5)

似乎混淆是由数字格式引起的。捆绑版本不是小数。它是一个版本(或许可能构建)所以1.11实际上是“一点十一”。因此1.11大于1.2。在这种情况下,我成功使用了1.20。

答案 6 :(得分:4)

通常,这可能是由于缺少版本号而引起的。因此,在Identity下添加版本号,并检查内部版本号。

enter image description here

保持编码.........:)

答案 7 :(得分:3)

对我来说(Xcode 4.5)更改内部版本号解决了问题。将版本设置为1.0.2 ... 2.0.2等然后增加构建#(Adam 3点给我一个idia在哪里看)。

答案 8 :(得分:2)

我花了几个小时试图解决这个问题。我已尽力检查以确保CFBundleVersion确实高于旧版本,通过在文本编辑器上打开info.plist,获取目标信息并阅读属性上的版本,让我的妻子阅读版本在iTunes上确认我没有受到意想不到的早期阿尔茨海默病的打击。

最后,这种做法不知何故。我的旧版本是1.0.4。我试过1.3.5,1.4.5等;没人工作。但令人惊讶的是,当我输入2.0.0时,Application Loader喜欢它所看到和上传的内容。这是由于Application Loader中的错误吗?

答案 9 :(得分:2)

您应该能够登录iTunes Connect并查看该应用的当前版本(包括您提交但尚未上线的任何版本)。检查以确保您之前没有提交过具有更高(或相同)版本号的版本。

答案 10 :(得分:2)

注意错误信息。

错误消息包含方括号中的前一个包号(例如[9])。

因此,您需要增加该捆绑编号(例如9.1),尽管您的新版本号为1.2

因此,当您在iTunes Connect中将版本从1.1更新到1.2时,您需要在项目中设置这些值

Version number = 1.2
Bundle number = [previous bundle number]++

答案 11 :(得分:2)

我知道这是一个老问题,但我刚遇到这个问题。我通过从存档中删除项目然后重新存档来解决它。显然,该应用程序的先前版本就坐在那里并引起混淆。

答案 12 :(得分:2)

在xcode4中版本号旁边的目标摘要中是一个构建,我从1开始,每次我进行二进制上传时都会增加,这解决了我的问题

答案 13 :(得分:2)

如果报告的错误是CFBundleVersion,则修复通常非常简单。检查/试试这个:

  1. 转到Project Navigator中的顶级项目项,然后单击它。
  2. 在面板中右键单击应用程序目标。
  3. 点击摘要标签。
  4. 在摘要标签上,您会看到有两个不同的“版本”可供调整。第一个是“版本”字段,用于Mac应用程序的默认“关于”屏幕。右边的那个是“Build Version”。这是App Store提交真正重要的一个!

答案 14 :(得分:1)

我通过交换“版本”和“构建”编号

犯了一个错误

不是将2.3放在Version字段中,而是将它放在Build no。

答案 15 :(得分:1)

我在这篇文章CFBundleVersion must be higher than previous version

中找到了此错误的解决方案

希望这有帮助!

答案 16 :(得分:1)

以下是我解决问题的方法(而且我猜测这是很多人的问题):

1)单击项目设置的常规选项卡(可以通过单击所有代码文件顶部的项目名称来访问它。)

2)确保构建字段与您在plist中放置的" Bundle Version"键。

这对我来说是个问题,无论出于什么原因他们都不同步。我认为当你改变Bundler Version键时,它应该同步(反之亦然)。但它无论出于何种原因都没有发生 - 可能是一个错误。

答案 17 :(得分:1)

我遇到了同样的问题并且它发生了,因为我没有存档,而且我使用的是我用于1.0的第一个存档,但是使用的是1.0.1。所以我选择了iOS设备,存档然后验证。 Ta-daaa,它有效!

答案 18 :(得分:1)

我的项目中有iPhone和iPad版本,ipad的infoplist由于某种原因与ipad产品无关,Check Target会员资格并将其与正确的产品相关联为我解决了这个问题。

答案 19 :(得分:0)

我有类似的问题,花了半个小时后,我注意到我的数字增加了。 我没有增加 Bundle version ,而是在Info.plist中增加 Bundleversions, string, short 。 使用CMD + Shift + F在项目中搜索“CFBundleVersion”。您将看到需要增加CFBundleVersion数。

答案 20 :(得分:0)

尝试更改版本=" 1.1.1.0"到版本=" 1.1.1"

答案 21 :(得分:0)

late October起,Apple要求版本号小于4位数(1.2.3或1.23而不是1.2.3.4或1.234)。这也适用于图书馆!

对项目目录中违规版本号的快速grep应该会出现违规库:

grep -r "1.2.3.4" .

答案 22 :(得分:0)

我有一个活跃的TestFlight测试版正在运行。 构建2020 ,版本407

我为官方 App Store审核提交了一个应用。 构建2020 ,版本435,并获得批准。它只是坐在那里,等着我把它推到App Store。

在没有添加复杂的侧面故事的情况下,我想要做的是让我的TestFlight测试用户获得更新版本,以便在开始App Store版本之前预览几天的官方App Store版本。你为什么问?因为他们获得免费功能,一旦应用程序上线,就会花钱。

所以,我向TestFlight提交了 Build 2020 ,版本436,但它被拒绝了。

它被拒绝了,因为我有一个已批准的官方App-Store候选人具有相同的内部版本号

解决方案:更改TestFlight版本的内部版本号。我向TestFlight提交了 Build 20200 (我添加了一个额外的零)版本436,并且它被批准了。不用担心,只要您仍在使用相同的BundleID,您仍然可以将此版本推送到同一个TestFlight测试版组。

答案 23 :(得分:0)

检查以前上传版本的捆绑版本,您应该将更高的捆绑版本与已上载版本的捆绑版本进行比较。已经上传的版本可以通过itunesconnect / application / view details / binary details查看。

答案 24 :(得分:0)

我遇到了同样的问题。首次提交的版本是1.5.20,并希望更新到1.7.30。

在尝试版本1.8,2.0和3.0失败后,我将我的CFBundleVersion更新为10.0,然后突然发挥作用。

我不确定这种行为背后的逻辑是什么,但它让我浪费了大约2天的工作时间。

答案 25 :(得分:0)

我找到了另一种解决方案。

如果您选择目标>>信息>>更新套装ID。

答案 26 :(得分:0)

在xcode 4.2中,如果从info.plist文件修改,似乎不注册包版本。 我直接在xcode面板“info”中设置了我的新捆绑版本,现在它可以工作了!

答案 27 :(得分:0)

只要我使用Apple的“Application Loader”上传我的ipa文件,就没有一套不断增加的版本号,但如果我使用XCode的“Organizer”(在3.2版本的“Window”下拉菜单中找到) .5),点击“验证...”按钮,等待它批准我,然后点击“提交...”按钮,所有内容都按照预期的方式使用了一个合理的版本号(一个高于该值的单个增量)目前可在应用商店购买。)

答案 28 :(得分:0)

我遇到了同样的问题。基本上我以前的版本是1.12我想将它改为1.2,但有上述错误。我确实尝试过1.20并且确实完美无缺

答案 29 :(得分:0)

我在类似的问题上度过了两个晚上。我以前的版本是1.02,我尝试使用1.2,1.20,1.1验证,我总是得到无效的二进制消息。

我通过输入2.0作为版本号来解决它,并且有效。我怀疑这也是一个错误。我最近将我的游戏从1.0升级到1.1时没有收到此消息,但那是xcode 3.感谢您的提示!