M1芯片MacBook Air+Xcode14归档arm64时Alamofire无Bitcode报错
解决Alamofire 4.9.1 + Carthage + M1 Mac归档arm64设备的Bitcode错误
问题根源
Alamofire 4.9.1是老版本,官方预编译的framework没给M1的arm64架构开启Bitcode,而Xcode 14归档时对Bitcode的校验更严格,单纯修改自己项目的ENABLE_BITCODE设置无法覆盖第三方库的配置。
解决办法
1. 强制Carthage本地编译Alamofire并启用Bitcode
在终端执行以下命令,强制跳过预编译包,本地编译时注入Bitcode启用参数:
CARTHAGE_BUILD_FLAGS="--configuration Release --platform iOS --arch arm64" ENABLE_BITCODE=YES carthage update Alamofire --no-use-binaries
若你的Carthage版本支持xcframework,可额外添加--use-xcframeworks参数,适配M1架构更顺畅。
2. 彻底关闭所有目标的Bitcode
只修改项目主target的设置没用,需确保所有相关目标的Bitcode都关闭:
- 打开项目Build Settings,搜索
ENABLE_BITCODE,将主target、Carthage引入的Alamofire对应的target(在Carthage的项目文件内)的该选项全部设为NO - 检查归档配置:执行
Product > Archive前,确认当前Scheme的Release配置中,Bitcode处于关闭状态
3. 升级Alamofire到新版本
Alamofire 5及以上版本已适配M1架构,对Xcode 14的兼容性更好,若项目允许升级,直接执行以下命令拉取最新稳定版:
carthage update Alamofire --use-xcframeworks
4. 排除冲突架构
若编译时出现arm64与x86_64的架构冲突,在项目Build Settings的Excluded Architectures中,给Release配置添加x86_64,确保归档仅编译arm64架构。
内容的提问来源于stack exchange,提问作者khan rayyan
相关产品推荐
相关产品推荐

