M2 MacBook Air打包Flutter IPA遇Rosetta签名补充失败报错求助
解决M2 MacBook Air上Flutter打包IPA的Rosetta签名错误
问题描述
在M2芯片的MacBook Air上执行flutter build ipa或通过Xcode归档时,出现以下Rosetta相关错误,同一项目在Mac Studio上可正常构建:
error: rosetta error: Attachment of code signature supplement failed: 1 /var/db/oah/696e0658733369639e73a08cf7f6dc139beb7664301bce347578c8abc0ea947d/5736a6a6d3f8f7c6d96e251fef39431e4470b986151c860a80189c719e1eaf9d/gen_snapshot_arm64.aot Dart snapshot generator failed with exit code -6 Target aot_assembly_release failed: Exception: AOT snapshotter exited with code -6
已尝试清理重建、重装Rosetta、新建项目迁移代码等方法,均无效。
解决思路
1. 清理Rosetta缓存文件
报错指向了/var/db/oah下的缓存文件,手动删除对应目录后重建:
sudo rm -rf /var/db/oah/696e0658733369639e73a08cf7f6dc139beb7664301bce347578c8abc0ea947d
执行后重新运行flutter build ipa。
2. 强制使用arm64原生架构构建
M2芯片为arm64架构,避免Rosetta转译可能的问题:
- 打开iOS项目的
Runner.xcworkspace,在Build Settings中设置Architectures为arm64,并移除x86_64; - 或直接用命令指定架构打包:
flutter build ipa --ios-arch=arm64
3. 重置Xcode代码签名与缓存
- 打开Xcode,进入项目的Signing & Capabilities,先取消
Automatically manage signing,再重新勾选并选择正确的开发者账号; - 清理Xcode派生数据:
rm -rf ~/Library/Developer/Xcode/DerivedData
4. 检查系统完整性保护(SIP)状态
Rosetta的签名操作依赖SIP正常工作:
- 重启Mac进入恢复模式,打开终端执行
csrutil status查看SIP是否开启; - 若SIP处于关闭状态,执行
csrutil enable开启,重启后再尝试打包。
5. 更新Flutter版本
当前使用的Flutter 3.24.4可能存在与Xcode 16.1的兼容性问题,尝试升级到最新稳定版:
flutter upgrade
若稳定版仍有问题,可临时切换到beta通道测试:
flutter channel beta && flutter upgrade
内容的提问来源于stack exchange,提问作者user28832237
相关产品推荐
相关产品推荐

