陈斌彬的技术博客

Stay foolish,stay hungry

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

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

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

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

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

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

如下图所示是支持64位

img

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

img

Analyze要为release模式

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

img

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

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

img

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

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

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

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

img

Resource Reference