如何在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", // 其余依赖库保持不变 ], // 其余配置无需改动 }
验证步骤
- 确认预编译库的
include目录结构与配置一致 - 确认应用的
cc_binary已添加libult123到shared_libs - 代码中的头文件引用与实际路径匹配
内容的提问来源于stack exchange,提问作者Shekhar Chauhan
相关产品推荐
相关产品推荐

