无论我将构建版本或应用程序版本更改为什么,都会收到ITMS-4238 "冗余二进制上传"错误。

76

我拒绝了一个版本号为1.0 (1.0) 的二进制文件。 状态变成了“被开发者拒绝”。

我试图上传一个新的二进制文件,但遇到了问题。然后我看到需要增加我的构建版本号。

我将应用程序版本和构建版本都增加到了1.1,但这是个错误。

系统出现了一个关于应用程序版本不匹配的错误提示,我明白了。

然后我尝试使用许多不同的构建版本号,如1.1、1.0.1、1.2、1.3、1.0.3等。但都无法解决这个问题。iTunes Connect 上只列出了一个构建版本号 (1.0)。

我尝试提交没有二进制文件的版本,但系统提示我需要有一个二进制文件。

我甚至尝试在 iTunes Connect 中更改应用程序版本为 1.1,然后上传 1.1 (1.0),但仍然出现重复的问题。

有人遇到过这种问题吗?

错误截图


https://dev59.com/TF8e5IYBdhLWcg3wfajv - destino
除了下面的答案,不要忘记你需要创建一个新的存档,然后在组织者中选择它,否则构建编号更改将毫无差异。 - TigerCoding
16个回答

61
更改构建版本号的解决方法对我有效,具体如下:
  • 应用程序版本状态为“准备提交”
  • 新版本号已保存在iTunesConnect中(在iTunesConnect版本页面上按保存按钮)
  • CFBundleShortVersionString与iTunesConnect中的版本号匹配(例如“1.2”)
  • Info.plist中的CFBundleVersion已递增(例如1.2.1)
通过这种方法,iTunesConnect版本关联了多个构建版本。
下面是在iTunesConnect中的效果展示(1.2是短版本号,1.2和1.2.1是包版本号):

2
对我有用。您也可以在Xcode中执行此操作,单击项目根目录>主目标>常规,并修改“Build”字段(1.2.1),但不是“Version”字段(1.2)。谢谢。 - voghDev
这似乎对我有用,但我遇到了另一个问题:“Info.plist文件中的CFBundleVersion密钥必须包含比先前上传版本更高的版本”(https://dev59.com/9W445IYBdhLWcg3wTIfm)。 - rockfakie
这种方法对我很有效。然而,关键是在成功从Xcode上传二进制文件后耐心等待iTunes Connect更新。从成功上传的通知到新版本在iTunes Connect中出现大约需要10分钟。 - user183804

24

我试了好几个小时都没成功,在等了几个小时后,我收到了苹果技术支持的回复,要求我提供更多信息。 当我想再次重现问题以获取截图时,我决定使用版本号为2.0的构建,希望主要版本号更高一些。 这行得通了! 我在网上看到的所有信息都说1.0到1.1会很好用,或者是1.0.0到1.0.1。 但出于某种原因,我必须从1.0升级到2.0。

另外还有可能是等待了几个小时产生了什么影响。


1
非常感谢!你救了我一天!我试图上传一个更新,旧版本1.0 (构建1.0),新版本1.1。我尝试将构建设置为1.0.1、1.1、1.1.1、1.0、1.2,但错误始终如一!我将其设置为2.0,它就可以工作了!所以,下次我想设置3.0...谢谢!PS:请将您自己的答案标记为正确答案。 - Tenaciousd93
5
如果您在版本控制方面很讲究,那么这个做法可能不太合适。但如果我只是想把一个错误的(或者没有更新的)二进制文件替换为同一次构建的新文件,有没有办法覆盖或删除先前的构建文件呢? - Adro
1
@crt79 感谢您的回答。在我的情况下,通过增加构建号的次要数字(例如从1.2.1到1.2.2)也可以解决问题:)。干杯 - Jack Vo
对于在使用PhoneGap Build时遇到问题的任何人,请在iTunes Connect中更改您的iOS应用程序的版本号,并更改config.xml中的行:<widget id="com.myapp.name" version="3.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0">,将其更改为相同的版本号。 在这种情况下:分别为3.0.0。 - cwiggo

10

通过将版本号增加1而不是子版本来解决了这个问题


比如,从1.0到2.0,而不是从1.0到1.1。


4
你不需要改变版本号,只需更改构建号。但你应该知道,构建号必须比你之前上传的版本号要高。例如,你的版本号是2.6.8,构建号是2.6.8,那么你可以将构建号更改为2.6.9。如果你将构建号更改为2.6.8.0,则会出现一个错误,提示构建号(2.6.8.0)必须比现有的构建号(2.6.8)高。因此,关键点在于构建号。
@Jayprakash Dubey @Tenaciousd93

4

我也遇到过这个问题,只需要增加构建版本号就可以解决。我将构建版本号更改为1.0.1,然后它就可以工作了。你可以在Xcode的“常规”标签中找到它。在提交到应用商店之前,请确保再次进行存档和验证。


2
我猜想,由于苹果已将TestFlight集成到iTunes Connect中,因此在项目设置-目标-常规屏幕中,版本和构建(这是他们使用的措辞)之间存在差异,在info.plist中,它的等效项是“Bundle Version String short”和“Bundle Version”。对我来说,这里的措辞从未真正有意义过。
我遇到了版本2.2和构建2.2的错误。我将其更改为版本2.2和构建1(因为这是我的第一个上传),然后它就可以工作了。

2
由于某些原因,苹果在Xcode的“常规”选项卡中提供了构建字段。
我也遇到了这个问题,不断更改版本号后仍然一直出现相同的错误。
在这里要做的是只更新构建号,即使使用相同的版本号。
在我的情况下,我有一个应用程序版本为0.0.1,每次上传二进制文件时,我需要更改构建号,例如: 上传构建0.0.0 - 拒绝二进制 上传构建0.0.1 - 拒绝二进制 上传构建0.0.2

2

我自己尝试了很多不同的构建版本号。唯一有效的选项是给出一个4位数的构建版本号:1.1.0.1(其中1.1是我在iTunes Connect上应用程序的版本号)。

希望这可以帮到你!


1
使用4位版本号时,在尝试提交二进制文件时出现以下错误:此捆绑包无效 - Info.plist文件中CFBundleVersion [1.2.0.1]键的值必须是最多三个非负整数的点分列表。 - Etienne
2
@Etienne,你的版本号应该保持在1.1,只有构建号应该使用4位数字(例如,在此示例中为1.1.0.1)。 - winterized
谢谢大家,你们用这个救了我的一天! - Tom

1

检查是否已经使用了运行脚本: 在此输入图片描述

如果是,则需要将更改提交到您的Git服务器,然后脚本将自动增加版本号!


1
我的问题是,我在Xcode的“常规”选项卡中更新的构建号并没有改变应用程序plist中的捆绑版本号 - 因此上传者认为无论我使用什么构建号,我都在上传相同的构建。一旦我在plist中更改了捆绑版本号,一切都正常了。

更改构建号后,它可以正常工作。感谢您的回答 :) - RAJESH KUMAR ARUMUGAM

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