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

如何在Android.bp中导入自定义编译的libult123共享库?

解决libult123头文件找不到的问题

问题原因

编译报错'libult123/ult_lib.h' file not found,核心原因有两个:

  • 预编译的libult123未配置头文件导出路径,导致编译应用时无法检索到头文件
  • 代码中#include <libult123/ult_lib.h>的引用写法,与当前头文件的实际存放结构不匹配

正确配置方案

1. 修正预编译库的Android.bp

在cc_prebuilt_library_shared块中添加头文件导出配置,让依赖该库的应用能自动获取头文件路径:

cc_prebuilt_library_shared {
    name: "libult123",
    target: {
        android_arm: {
            srcs: ["lib/libult123.so"],
        },
        android_arm64: {
            srcs: ["lib64/libult123.so"],
        },
    },
    strip: { none:true, },
    // 关键:导出头文件所在目录
    export_include_dirs: ["include"],
}

2. 统一头文件结构与引用写法

根据你的需求,有两种适配方式:

  • 方式一:修改代码引用
    原libult123的头文件路径为include/ult_lib.h,直接在代码中调整引用:
    #include <ult_lib.h>
    
  • 方式二:调整头文件目录结构(更符合Android规范)
    将头文件移动到include/libult123/ult_lib.h,这样代码中#include <libult123/ult_lib.h>的写法可以保留,同时预编译库的export_include_dirs配置无需修改。

3. 配置应用的cc_binary

确保在应用的cc_binary块中正确依赖libult123:

cc_binary {
    name: "ult_pre3",

    srcs: [
        "test_ult_with_import.cpp"
    ],

    shared_libs: [
        "libult123", // 必须添加该依赖
        "android.hardware.configstore@1.1",
        // 其余依赖库保持不变
    ],

    // 其余配置无需改动
}

验证步骤

  1. 确认预编译库的include目录结构与配置一致
  2. 确认应用的cc_binary已添加libult123到shared_libs
  3. 代码中的头文件引用与实际路径匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:05:21