Mac 13.3 M1 Max编译Android 12 AOSP报错求助
问题解答
1. 报错原因分析
(1)初始SDK不兼容报错
AOSP官方编译脚本仅支持指定范围的Mac SDK(10.10~11.1),你的系统自带13.3版本不在支持列表内,触发版本检测失败。
(2)sprintf废弃编译错误
AOSP编译规则默认开启-Werror(将警告强制转为错误),高版本Mac SDK中sprintf被标记为废弃函数,因此触发编译终止。
(3)链接器错误
你使用的AOSP预编译Rust工具链(1.51.0)基于旧版clang编译,与当前系统的clang 16.0.1存在二进制兼容性问题;同时,强行将13.3 SDK加入支持列表后,编译链中预编译组件(如Rust库)与新SDK的ABI不匹配,导致链接器无法识别rlib文件中的归档成员格式,最终链接失败。
2. 无需修改代码的解决方案
具体步骤:
- 安装兼容旧版Mac SDK:获取AOSP官方支持的最高版本Mac SDK(11.1),将其放置到Xcode的SDK目录:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ - 指定编译用SDK与目标版本:编译前执行以下环境变量配置:
export MACOSX_DEPLOYMENT_TARGET=11.0 export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk - 使用AOSP自带clang编译链:确保系统PATH中AOSP预编译clang的路径优先级高于系统clang,避免使用系统的clang 16.0.1。临时调整命令示例:
export PATH=/Volumes/aosp/source/prebuilts/clang/host/darwin-x86/clang-<对应版本>/bin:$PATH - 清理缓存后重新编译:执行
m clean清理之前的编译缓存,再运行m启动编译。
内容的提问来源于stack exchange,提问作者Mordechay
相关产品推荐
相关产品推荐

