编译LineageOS时遇错误:make: *** [ninja_wrapper] Error 1 求助
先把你遇到的错误信息贴出来,方便大家定位场景:
将编译LineageOS时出现错误:"make: *** [ninja_wrapper] Error 1"
frameworks/av/camera/cameraserver/Android.mk:18: 目标已将cameraserver集成到mediaserver中,这会削弱7.0版本引入的安全措施
find: ‘/home/xuanan/android/lineage/out/target/common/obj/SHARED_LIBRARIES/libwifi-hal-mock_intermediates’: 没有该文件或目录
以ninja启动编译
ninja: 进入目录 `.'
[ 0% 14/48263] Lex: aidl <= system/tools/aidl/aidl_language_l.ll
FAILED: /bin/bash -c "prebuilts/misc/linux-x86/flex/flex-2.5.39 -o/home/xuanan/android...
我之前编译LineageOS的时候也碰到过类似的问题,咱们一步步拆解解决:
1. 优先修复最直接的编译失败:flex工具相关错误
这个错误是在处理aidl的词法分析文件时炸的,大概率是缓存混乱、工具权限不足或者文件损坏:
- 先彻底清理编译缓存,避免旧文件干扰:
rm -rf out/(比make clean更彻底) - 检查flex工具的可执行权限:执行
ls -l prebuilts/misc/linux-x86/flex/flex-2.5.39,如果权限列没有x,就给它加执行权限:chmod +x prebuilts/misc/linux-x86/flex/flex-2.5.39 - 重新初始化编译环境:
source build/envsetup.sh && lunch <你的设备代号>,然后用多线程重新编译:make -j$(nproc)
2. 解决libwifi-hal-mock目录缺失的问题
这个目录找不到,要么是设备配置引用了不存在的模块,要么是源码没同步完整:
- 打开你的设备BoardConfig.mk(路径一般是
device/<厂商>/<设备>/BoardConfig.mk),搜索是否有WPA_SUPPLICANT_VERSION或者LIBWIFI_HAL_MOCK相关配置,如果你的设备不需要这个mock库,直接注释掉或者改成对应硬件的实际配置 - 同步完整源码:执行
repo sync -c -j$(nproc),确保所有依赖的模块都拉取到位(有时候部分模块会因为网络问题同步失败) - 清理out目录后重新编译,让系统重新生成中间文件目录
3. 处理cameraserver集成到mediaserver的安全警告
这个警告是说当前配置把原本独立的cameraserver进程合并到了mediaserver,会破坏Android 7.0+引入的权限隔离机制,降低安全性:
- 打开
frameworks/av/camera/cameraserver/Android.mk,找到第18行附近的集成配置,注释掉相关代码 - 检查设备的BoardConfig.mk是否有
CAMERASERVER_MEDIA_SERVER_INTEGRATION := true,如果有,改成false - 注意:如果你的设备是旧机型适配,可能依赖这个合并配置才能正常编译,这种情况下可以暂时忽略警告,但建议后续尽量调整为独立进程的方案
按照这个顺序处理完之后,重新启动编译,应该就能解决大部分问题了。
内容的提问来源于stack exchange,提问作者Xuan An Nguyen




