AOSP编译执行m指令报错fopen failed exit status 1问题求助
AOSP Tiramisu编译dex_preopt_config.mk报错解决方案
根因分析
- 宿主环境不符合官方编译要求:当前使用的Ubuntu 14.04 + Linux 3.10内核,低于Android 13(Tiramisu)要求的最低宿主环境Ubuntu 18.04 + 4.15以上内核,系统依赖、内核接口与高版本AOSP编译工具不兼容。
- 沙箱修改未生效:修改
build/soong/ui/build/sandbox_linux.go后未重新编译soong构建工具,改动没有实际生效,nsjail沙箱仍存在文件访问拦截逻辑,导致配置文件打开失败。 - 旧编译残留冲突:out目录存在之前的编译残留文件,权限或格式错乱,导致dex_preopt配置加载时fopen失败。
修复步骤
- 第一步:清除所有旧编译残留,执行命令:
rm -rf out/ - 第二步:重新编译soong构建工具,让沙箱修改生效,执行命令:
make soong_ui - 第三步:临时关闭dex预编译功能规避当前报错,执行命令:
export WITH_DEXPREOPT=false
完成以上操作后重新执行lunch aosp_crosshatch-userdebug和m指令验证编译是否正常。 - 第四步(长期最优方案):升级宿主系统到Ubuntu 18.04/20.04,内核版本升级到4.15以上,从根本上解决系统兼容性问题,无需手动修改沙箱代码,也不会出现各类适配报错。
内容的提问来源于stack exchange,提问作者rockrock
相关产品推荐
相关产品推荐

