停用Bitcode并使用Xcode14后应用体积近乎翻倍,求解决方案
停用Bitcode后Xcode 14打包应用体积大幅增长的问题
Apple自Xcode 14起弃用Bitcode,不再接受启用Bitcode的应用提交。我们PhonePe团队停用Bitcode后,通过Xcode 14将应用上传至App Store Connect,发现应用体积大幅增加:从Xcode 13启用Bitcode时的189 MB,增长至Xcode 14下的342 MB,近乎翻倍。请问是否有其他开发者遇到类似问题,或是有减小应用体积的解决方案?
Bitcode弃用说明
- 从Xcode 14开始,watchOS和tvOS应用不再要求使用Bitcode,App Store不再接受来自Xcode 14的Bitcode提交。
- Xcode默认不再构建Bitcode,若项目明确启用Bitcode会生成警告:
"Building with bitcode is deprecated. Please update your project and/or target settings to disable bitcode."未来Xcode版本将移除构建Bitcode的功能。包含Bitcode的IPA在提交至App Store前会被剥离Bitcode。过往Bitcode提交的调试符号仍可下载。(编号:86118779) - 由于Bitcode现已被弃用,iOS、tvOS和watchOS的构建默认不再包含Bitcode。(编号:87590506)
问题反馈与解决方案
不少开发者都遇到过停用Bitcode后应用体积暴涨的情况,核心原因是:启用Bitcode时App Store会对二进制文件做二次优化裁剪,而停用Bitcode后,Xcode直接上传未经Apple二次处理的完整二进制包,体积自然会上升。以下是经过验证的体积优化方案:
1. 配置Xcode编译优化
在项目Build Settings中调整以下选项:
- Release模式下,将
Optimization Level设为Fastest, Smallest [-Os] - 勾选
Strip Debug Symbols During Copy和Strip Linked Product - 开启
Dead Code Stripping,并将Link Time Optimization (LTO)设为Incremental或Full
2. 精简资源文件
- 用WebP/HEIC格式替换PNG/JPG图片,大幅压缩图片体积
- 用工具(如LSUnusedResources)扫描并删除未使用的图片、音频、本地化资源
- 针对设备分辨率打包适配资源,避免冗余的多尺寸文件
3. 二进制裁剪与分发优化
- 用
lipo工具移除Release包中的模拟器架构(如x86_64),只保留真机所需架构 - 上传时勾选"Include app thinning variants for all supported devices",开启App Thinning,让App Store针对不同设备分发适配的二进制版本
- 检查第三方SDK是否包含冗余模块或架构,优先选择轻量级版本,或仅引入所需功能模块
4. 代码层面精简
- 删除项目中未使用的类、方法和第三方库
- 用Swift结构体替代部分类,减少运行时开销与二进制体积
- 避免引入过大的SDK,优先选择功能匹配的轻量级替代方案
补充提示
Xcode 14上传后后台显示的是完整IPA体积,用户实际下载的是经过App Store优化裁剪后的版本(比如适配特定设备的精简包),实际下载体积可能远小于后台显示的342MB。可在App Store Connect的"App Size"页面查看用户端预估下载体积。
内容的提问来源于stack exchange,提问作者Srikanth
相关产品推荐
相关产品推荐

