ITMS-90062错误:键CFBundleShortVersionString的值必须比先前批准的版本号更高。

10
我正在尝试第一次更新我的应用程序,但遇到了这个问题。我搜索了很多,但没有一个解决方案适用于我。

enter image description here

App Store Connect 操作错误

ERROR ITMS-90062: “此包无效。Info.plist 文件中 CFBundleShortVersionString 键的值 [2020.0] 必须比先前批准版本的值 [2020.0] 更高。有关 CFBundleShortVersionString 的更多信息,请访问 https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring

我的 info.plist 文件如下:

enter image description here

常规窗口:

enter image description here


这可能是问题吗?https://dev59.com/dFsW5IYBdhLWcg3wfXRa#37048170 - Zaraki
7个回答

13

TL;DR:如果您有一款已被官方应用商店批准的应用程序版本,则不能上传具有相同版本的构建版本到TestFlight。 您必须删除官方应用商店提交的应用程序,或者增加TestFlight版本号。

我找出了这种情况发生的原因。

  • 我在应用商店中有一个版本为2010的应用程序。

  • 我一直在运行一个外部测试,版本号为2020,构建编号在400-410范围内。

  • 为了发现我的应用程序是否会在几周后实际发布时被应用商店拒绝,我提交了版本为2020,构建编号为407的应用程序进行官方应用商店审查。我预计它会因各种原因被拒绝,但它却被批准了!然而,我还没有准备好发布它,因为我还有更多的修复要实现。所以,我让它保持不变,等待我做一些处理。

  • 然后,我想为我的外部测试上传一个更新的构建版本,仍为版本2020,构建编号为410,但我收到了这个错误。

  • 得益于user462990的回答,我意识到该错误可能是因为我目前已经批准并等待发布到官方应用商店的版本为2020,因此iTC不允许我提交相同构建编号的TestFlight外部测试。

因此,我选择“取消此版本”的官方批准版本,然后,哇! 我现在可以上传具有相同构建编号的构建版本。


在Xcode 9.2中: <key>CFBundleShortVersionString</key> <string>n.n.n.</string>,在Info.plist中出现 在UI中显示为:“Bundle版本字符串,简短” - benc

2

我认为这是苹果方面的问题。几个小时后,问题自动解决了。


谢谢你提到这个问题。经过一年的学习,我发现该服务泄漏了很多错误,但这些错误最终都得到了解决。提供具体的例子会更有帮助。对我而言,在你试图满足截止日期并且出现错误时,你需要尽可能多的相关信息。 - benc

2

对我有用的方法是将它从1.0 (.6)更改为1.1 (.0)。这不是真正的新“版本”,而是渐进式的改进和修正。一个想法是,当应用程序被接受到iTunes商店后,下一个上传必须是更高版本。


谢谢您的回答,这让我彻底困惑了! - jungledev

1

上传更新时必须始终增加版本号,因此将其从1.0更改为1.1


我在.plist文件中有,正如你所看到的。 - Bilal
@Bilal Xcode的目标General窗口显示了什么? - trojanfoe
@Bilal 好的,我不明白那个。 - trojanfoe
更改“版本号”(CFBundleShortVersionString)可能是一种过度解决问题的方法,但错误似乎更具体。 - benc

1

我今天遇到了类似的问题。几天前上传新版本时没有任何问题。在这里我发现有人发布了一个相似的问题https://discussions.apple.com/thread/7297092。他们通过更改子项目中Info.plist值来解决了此问题,但是我尝试过了,仍然遇到了相同的问题。

我找不到关于为什么会发生这种情况或何时开始的任何信息,但我知道5天前我已经上传了一个包含所有相同项目的预发布版本到TestFlight。

我当前按以下方式增加预发布构建:

1.10(1)-> CFBundleVersionShortString(CFBundleVersion) 1.10(2) ……

我已经升级到1.10(7),并在5天前部署了它。 现在,我无法让任何版本工作,例如1.10(8),1.10(9),1.10(1.10)等。 它们都显示“CFBundleShortVersionString [1.0]必须大于之前批准的版本[1.3]”。

1.3版本是商店中先前可用的正确版本,但明显地,捆绑版本1.0并不是。


3
虽然这段话很有趣、深刻(因此很有用),但它只是一条评论,不是一个答案。我认为你应该简单地补充说明这是苹果提交过程中的临时问题,以便将其变成答案。 - trojanfoe
我已经发布了答案,但是会在这里进行评论。苹果不将版本视为十进制数,而是将其视为由句点分隔的整数。在您的情况下,您之前的构建版本是1.10,他们将其解释为主要版本1,次要版本10。您的新版本是1.3,它是主要版本1,次要版本3。由于现有的次要版本10大于3,它将无法满足他们的标准。尝试一个新版本1.30,或者切换到他们的方案,并将您的新版本设置为1.11(接下来是1.12等)。 - Dan

1
对于其他遇到这个问题的人来说,我的情况如下:
注意:对于我的构建,版本号采用a.b.c的形式(在本例中为1.4.6),而构建号只是一个整数(在本例中为1555)。另外,通常我使用Fastlane来上传构建,并且我使用Flutter编写我的应用程序。
我使用Fastlane上传了一个应用程序构建(1.4.6 1553)并提交了审核。它被批准了。与此同时,我发现了一个错误,所以我按照上面的说明拒绝了发布并将其删除。然后我使用Fastlane上传了另一个构建(1.4.6 1555)。这个构建被拒绝了,出现了ITMS-90062错误。所以,我尝试了1.4.7 1555,仍然被拒绝。然后我尝试了1.5.0 1555,仍然被拒绝。每次都是同样的错误(ITMS-90062)。
对我来说,解决方案是创建一个存档(1.4.7 1555)并使用XCode上传它。采用这种方法是成功的。...从那里开始,我现在也可以成功使用Fastlane再次上传。
由于某种原因,在被拒绝后进行的Fastlane上传(我猜是开发者拒绝或苹果拒绝)将无法正常工作;您需要在XCode内部进行一次上传来“修复”问题,然后Fastlane上传将再次正常工作。

1
这是我能够解决ITMS-90062问题和快速上传的唯一方法。我没有使用Xcode上传,而是使用了以下命令:xcrun altool --upload-app --type ios --file <路径> --username <用户名> --password <一次性密码> - undefined

0

当我从版本1.141升级到版本1.15时,我遇到了这个问题。苹果不将版本视为十进制数,而是将其视为由句点分隔的多个整数。因此,在我的情况下,苹果认为1.141是主要版本1,次要版本141,然后我的新版本是主要版本1,次要版本15。由于141 > 15,所以失败了。

处理此问题的两个选项:

  1. 使用苹果的版本号解释方式,因此您始终将次要版本增加1:1.1、1.2、... 1.9、1.10、1.11
  2. 如果您希望使用“百位”或“千位”(我这样做,因为我尝试在精度中编码构建的范围-我使用千位进行次要错误修复发布),则始终用零填充它们:1.10、1.11、1.20、1.30

因此,在我的情况下,我从1.141升级到1.150,然后我就能够上传了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接