You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

编译LineageOS时遇错误:make: *** [ninja_wrapper] Error 1 求助

解决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

火山引擎 最新活动