CFBundleVersion中的Info.plist上传错误


108

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

我上载应用程序时遇到此错误。

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

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


为什么不尝试将其设置为1.2.1?
Nikita Rybak

我尝试了很多组合。没有工作。该错误不断出现。
亚当H

1
以及以前上传的版本是什么(在当前发布的应用程序的Info.plist中找到)?
Costique 2011年

您解决了这个问题吗?同样的问题突然发生在我身上。真令人沮丧。
罗恩·罗

我刚刚收到一封包含此错误的电子邮件,结果证明,我的一个旧版本(在过去一周中一直作为“处理中”的内容)停留在ITC中,终于被处理了。当它第一次被卡住时,我重新提交了另一个带有递增的内部版本号的内部版本,因​​此当较旧的版本最终得到处理后,它将触发错误。
blwinters,2015年

Answers:


210

Apple的上传服务器中至少有1个已知错误,这些错误没有修复超过12个月。注意事项:

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

1
CFBundleVersion在xcode 4.5中被标记为“ Build”,而不是“ Version”!版本最终在Info.plist文件中标记为“ CFBundleShortVersionString”。因此,确实需要为Build提供比以前更高的价值。
RickJansen

+1有用的人之一。我使用1.02了以前的版本。并且,使用此答案修复它。谢谢。
Praveenkumar

该答案应添加到FAQ有关如何将应用提交到应用商店的部分中。:))
danypata

@Adam:在阅读完时CFBundleShortVersionString,您在iTunes Connect中提供的版本号应该匹配。这意味着,如果您在使用的应用程序中显示版本号CFBundleShortVersionString。该CFBundleVersion应也增加了,这是一个苹果的用途来确定,如果你提交你的应用程序的更新版本。
测试时间

苹果公司最近以一种非向后兼容的方式重新定义了所有字符串的含义。
亚当

28

更新内部版本号。版本号很重要,但是内部版本号却有所不同。例如,我的应用程序初始版本为:

version #: 1.0
build #:   1.0

但是,当我尝试上传下一个版本时,即

version #: 1.1
build #:   1.0

它不会接受上传。只需将内部版本号增加到1.1,就可以接受上传。


完美...更改构建版本对我来说是成功的,这很棒,因为我真的很想保持捆绑软件版本和iTunes版本保持同步。
亚伦·海曼

9

如果不重新存档应用程序,Xcode 4会认为您想重新上传相同的版本。即使更改捆绑版本并重建,上传也将失败。请记住在“产品”菜单中进行“ 存档 ”!


7

这里的许多答案最终都对我有所帮助,但是直到我看到苹果正在比较的确切“版本”数字时,我才知道。

  1. 转到iTunes Connect->管理您的应用程序
  2. 选择您要检查其先前版本的应用程序
  3. 单击标有“ 查看详细信息”的蓝色按钮。
  4. 点击标有“ 二进制详细信息”的链接
  5. 查找捆绑版本的值

即使我以为自己提交的版本号是1.0.1,Apple实际存储的版本号是101。上面的一些评论使我相信我需要将版本更改为2.0(20)或1.5(15)或1.2(12) )—如您所见,这些都小于101。更新我的版本号102(不带点)解决了该问题。


6

本文指出,在应用商店中看到的版本号不一定与捆绑软件的版本号相同。当您在iTunes中查看应用程序的详细信息时,会有一个名为“二进制详细信息”的链接。该页面显示捆绑软件版本。我正在开发的应用程序之一是1.0版,但捆绑版是2.0版。上载版本为1.1的捆绑包失败,但2.1确实可行。

因此,有一个应用程序版本和一个捆绑版本。此问题与捆绑软件版本有关。


5

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



3

对我来说(Xcode 4.5)更改内部版本号解决了该问题。将版本设置为1.0.2 ... 2.0.2等,然后增加内部版本号(亚当3分给我一个idia的位置)。


2

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


这是一种误导;Apple不能简单地与iTunesConnect版本进行比较。请参阅下面的彼得的答案,以获得更准确的答案。
亚当

@Adam截至目前(2014-05),Apple确实确实将iOS应用程序的内部版本号与iTunesConnect版本号进行了比较。如果不匹配,则会收到此警告消息(不是错误):Version Mismatch - Neither CFBundleVersion ['201405030503'] nor CFBundleShortVersionString ['201405030503'] in the Info.plist match the version of the app set in iTunes Connect ['1.0.0'].但是,此iTunesConnect比较不是此问题中问题的原因。iTunesConnect比较只是警告,而不是显示停止错误。
罗勒·布尔克

2

我花了几个小时试图解决这个问题。我已通过文本编辑器打开info.plist,获取目标的信息并读取属性中的版本,以确保CFBundleVersion确实高于旧版本,请我的妻子阅读该版本在iTunes上确认我没有被意外的早老性痴呆症击中。

最后,这莫名其妙地达到了目的。我的旧版本是1.0.4。我尝试了1.3.5、1.4.5等;没有工作。但是令人惊讶的是,当我输入2.0.0时,Application Loader喜欢它所看到的并上传了它。这是由于Application Loader中的错误引起的吗?


2

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


这也是我的问题,错误消息非常容易引起误解!
mj662

我也有这个问题。令人难以置信的是,该消息是如此令人误解。浪费了我下午的大部分时间。感谢您的帮助。
Joel Anair

2

如果报告的错误是CFBundleVersion,则修复通常非常容易。检查/尝试:

  1. 转到“项目浏览器”中的顶级项目项,然后单击它。
  2. 在右侧面板中,单击应用程序目标。
  3. 单击摘要选项卡。

在摘要选项卡上,您将看到可以调整两个不同的“版本”。第一个是“版本”字段,用于Mac应用程序的默认“关于”屏幕。右侧的是“构建版本”。对于App Store提交,这确实很重要!


2

我知道这是一个老问题,但是我碰到了这个问题。我通过从存档中删除项目,然后重新存档来解决它。显然,该应用的先前版本位于其中并引起混乱。


2

请注意错误消息。

错误消息在方括号中包含先前的捆绑包编号(例如[9])。

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

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

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

2
注意:如果不确定上次上传的捆绑软件是什么,请单击旧版本,然后查找“二进制详细信息”(在“链接”下)。您应该看到“捆绑版:#”
Nathaniel Blumer 2014年

1

我的项目中有iPhone和iPad版本,ipad的信息列表由于某种原因未与ipad产品相关联,检查目标成员身份并将其与正确的产品相关联为我解决了此问题。




1

这是我解决问题的方法(我猜这是很多人的问题):

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

2)确保构建字段与您在plist中为“捆绑软件版本”键输入的内容匹配。

这对我来说就是问题,无论他们出于什么原因都不同步。我认为,当您更改Bundler版本密钥时,它应该会同步(反之亦然)。但是由于任何原因都没有发生-可能是一个错误。


1

我遇到了同样的问题,并且由于没有归档而发生了,并且我使用的是第一个用于1.0的归档,但使用的是1.0.1。因此,我选择了iOS设备,将其存档并进行验证。Ta-daaa,成功了!


应该是评论而不是答案。
Hello World

0

我有同样的问题。基本上,我的先前版本是1.12,我想将其更改为1.2,但是遇到了上述错误。我确实尝试了1.20,但效果确实不错


第二个数字必须在0到9之间,因此12是“太大”
9:00

1
“第二个数字”(我称它为次要版本号,只是为了好玩)可以是任何整数,没有界限。因此,12或是20完美的次要版本号。
Holex 2013年

0

只要我使用Apple的“ Application Loader”上载我的ipa文件,就没有一组不断增加的版本号起作用,但是如果我使用XCode的“ Organizer”(在3.2.5版的“ Window”下拉菜单中找到) ,单击“验证...”按钮,等待其批准,然后单击“提交...”按钮,一切都按预期进行,并带有一个合理的版本号(一个比当前当前版本高一个增量)在App Store上可用)。


0

在xcode 4.2中,如果您从info.plist文件进行修改,似乎没有注册捆绑软件版本。我直接在xcode面板“ info”中设置了新的捆绑软件版本,现在可以使用了!


0

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

如果选择目标>>信息>>更新捆绑ID。


0

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

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

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


0

检查先前上传版本的捆绑软件版本,与已上传版本的捆绑软件版本相比,应提供更高的捆绑软件版本。可以通过itunesconnect / application / view details / binary details查看已上传的版本。


0

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

我通过输入2.0作为版本号解决了该问题,并且有效。我怀疑这也是一个错误。最近将我的游戏从1.0升级到1.1时,我没有收到此消息,但这与xcode 3有关。谢谢!


0

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


0

尝试将version =“ 1.1.1.0”更改为version =“ 1.1.1”


0

10月下旬开始, Apple要求版本号必须少于4位(1.2.3或1.23,而不是1.2.3.4或1.234)。这也适用于库!

在项目目录中快速查找有问题的版本号的grep应该会打开有问题的库:

grep -r "1.2.3.4" .


0

我有一个正在运行的TestFlight Beta。 版本2020,版本407

我提交了一个应用供官方 App Store审查。 建立2020版本435,并获得批准。它只是坐在那里,等着我将其实时推送到App Store中。

无需添加复杂的故事,我想要做的就是为我的TestFlight beta用户提供一个更新版本,以在发布App Store版本之前预览几天的官方App Store版本。你为什么问?因为他们获得了免费功能,所以一旦该应用上线,就将要花钱。

因此,我向TestFlight 提交了Build 2020,版本436,但被拒绝了。

被拒绝是因为我有一个批准的官方App Store候选版本,并且内部版本号相同

解决方案:更改您的TestFlight版本的内部版本号。我向TestFlight 提交了Build 20200(我添加了一个额外的零)版本436,该版本获得批准。不用担心,只要您仍使用相同的BundleID,您仍可以将此构建推送到相同的TestFlight beta组。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.