有过App Store提审经验的童鞋应该知道,App Store对iOS提审包有一个包体大小的限制,这个限制不仅仅是对Mach-O可执行文件大小限制,还有整包大小的限制,比如“80M”、“150M”,这些包体大小的限制会直接影响到你APP能否成功上传或者玩家方便下载。App Store官方文档中规定,对于整包大小超过150M的App包,可以上传到App Store并发布,但是无法在移动网络下下载,必须在Wifi网络下才能下载;而对于Mach-O可执行文件大小的限制则依据iOS版本有不同的要求,具体如下图:
简单理解就是:
- 对于iOS7.0以下版本的App,32位+64位指令集的可执行文件之和最大为80M;
- 对于iOS7.x-iOS8.x版本的App,32位或64位指令集的可执行文件大小都不超过60M;
- 对于iOS9.0以上版本的App,32位+64位指令集的可执行文件之和最大为500M。
那么怎么查看Mach-O可执行文件的大小呢?上图也给出了答案,解压ipa包,找到app_name.app/app_name就是可执行文件,使用size命令查看一下该文件,即可看到__TEXT部分的大小。
之前对项目Unity升级使支持iOS64位的时候就遇到了一次可执行文件大小超过80M的上传失败,查了下原因,原来是因为Unity4.6.2及之后的版本使用了新的IL2CPP技术,使得最终编译的可执行文件大小激增。测试发现,Unity4.6.2以及之后的几个版本IL2CPP技术还是有挺大的差异