You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译Cardinal(Nougat)适配小米Mi Mix(Lithium)时libmemalloc编译错误求助

解决Cardinal Nougat编译小米Mix(Lithium)时libmemalloc依赖错误的思路

我之前帮不少人解决过类似的AOSP基ROM编译问题,针对你遇到的这个libmemalloc_intermediates/export_includes缺失的错误,可以从这几个方向排查:

1. 检查设备树的依赖配置

Cardinal作为AOSP基ROM,和LineageOS的硬件仓库引用逻辑可能存在差异。你需要确认:

  • 打开device/xiaomi/lithium/BoardConfig.mk,查看是否有正确引入高通显示模块的编译路径,比如是否包含类似TARGET_USES_QCOM_DISPLAY := true或者指定了MSM8996相关的编译flag;
  • 检查device/xiaomi/lithium/Android.mk或device/qcom/common下的配置文件,是否明确包含了hardware/qcom/display/msm8996/libgralloc目录的编译规则,确保libmemalloc模块会被优先编译。

2. 匹配硬件仓库的分支与版本

你当前使用的是LineageOS cm-14.1分支的hardware/qcom/display仓库,可能和Cardinal Nougat的源码树不兼容:

  • 尝试替换为Cardinal官方推荐的高通硬件仓库(如果有公开的manifest),或者对比Cardinal源码中hardware/qcom/display的默认配置,看libmemalloc的定义是否和LineageOS的版本一致;
  • 检查hardware/qcom/display/msm8996/libgralloc/Android.mk中的LOCAL_MODULE是否确实为libmemalloc,以及是否有遗漏的编译依赖(比如是否需要依赖其他高通显示库)。

3. 清理编译缓存避免冲突

之前编译LineageOS生成的中间文件可能干扰当前Cardinal的编译:

  • 执行以下命令彻底清理编译环境:
    make clobber
    rm -rf out/target/product/lithium/obj_arm/SHARED_LIBRARIES/libmemalloc_intermediates/
    
  • 重新初始化编译环境后再尝试编译:
    source build/envsetup.sh
    lunch lithium-userdebug
    make -j$(nproc)
    

4. 确认编译规则的引入逻辑

有时候libmemalloc的编译规则没有被编译系统正确识别:

  • 检查hardware/qcom/display/msm8996/Android.mk是否包含了libgralloc目录的mk文件,比如是否有include $(call all-makefiles-under, libgralloc)这样的语句;
  • 如果没有,手动在该文件中添加对libgralloc的引用,确保编译系统能找到libmemalloc的构建规则。

内容的提问来源于stack exchange,提问作者albertoduqe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:28:51