App提交iTunes Connect,"二进制无效"问题解决方案。

96
Eeng
0.4 2015.03.24 10:49* 字数 639

昨天提交打包提交App,将包上传到iTunes Connect之后,以为就能发布了,便点击构建版本,发现没有刚刚上传的包,于是就点击"预发行"看一下,会看到"已上传",过不久再刷新一次再看,就变成了二进制无效,无比的郁闷,上传了五六次都是二进制文件无效,

原因:1.自2015年2月份开始,新上传到iTunes上面审核的app,必须支持64位,新上传是指第一次上传,

或者没有审核通过过,总之就是在AppStore上面没有上架的app,必须支持64位,包括工程里面的代码和用到的静态库文件

2.如果之前iTunes上面有审核通过的app,现在只是上传升级版本,更新版本去审核,这时也可以提交成功,iTunes上面验证二进制文件可以通过,

不必非得支持64位,但是不要高兴太早,这只是权宜之计,到2015年6月份上传的升级版本还是要支持64位,只是现在这种情况不需要强制,

个人建议还是尽快检查自己的代码和静态库,需要更换的及早更换,被拒一次要等得时间一般是2礼拜左右,非常不值得

废话不多说,现在就来说说解决办法吧!

1.先查看下是否支持64位(发布的App要支持64位)

如下图所示是支持64位

2.查看Schemes的Analyze和Archive是否是release模式

Analyze要为release模式

以上两个解决了还是不行,打包上传TMD还是二进制文件无效,why?

用Xcode打包上传时,苹果让我们默认勾选了Include app symbols for your application to receive symbolicated crash logs from Apple.

将勾去掉,但是还是不能上传还是二进制文件无效.继续解决问题


Architectures:你想支持的指令集。(支持指令集是通过编译生成对应的二进制数据包实现的,如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,造成最终编译的包很大。)

Valid architectures:即将编译的指令集。(Valid architectures 和 Architecture两个集合的交集为最终编译生成的版本)

Build Active Architecture Only:是否只编译当前设备适用的指令集(如果这个参数设为YES,使用iPhone 6调试,那么最终生成的一个支持ARM64指令集的Binary。一般在DEBUG模式下设为YES,RELEASE设为NO)。

还有最好在iOS Device环境下打包,不要插上真机打包。

为了严谨可以将包导出,然后在终端检查看是否支持arm64,


此图说明支持64位。
iOS纪录篇
Web note ad 1