Android Studio添加非项目目录下外部C库配置报错如何解决?
配置错误原因
- 错误将纯C库当做Android Gradle模块配置:你在
settings.gradle声明的:ItemData和build.gradle添加的compile project(':ItemData'),仅适用于依赖独立的Android Library模块,而你要引入的是纯C源码库,对应路径下没有Android模块必备的build.gradle配置文件,Gradle无法识别模块构建属性,因此触发"No matching configuration"报错。 - CMake配置逻辑错误:原
target_link_libraries(ItemData)没有将编译出的ItemData动态库链接到你App的Native主库,编译后的库不会被打包进APK,且缺少头文件路径声明,后续Native代码引入头文件时会报错。 - 路径配置可靠性低:使用相对路径跨盘符寻址容易因为Gradle工作目录变化出现寻址错误。
修正步骤
删除无效的Gradle配置
- 删掉
settings.gradle中以下两行内容:
include ':ItemData' project(':ItemData').projectDir = new File(settingsDir, '../Sandbox/Software/RABBIT/UVTrolley/Ver01.6/ItemData')- 删掉app模块
build.gradle中的依赖配置compile project(':ItemData')
- 删掉
修正CMakeLists.txt配置
首先添加头文件搜索路径,避免后续引入头文件报错:# 替换为你ItemData库的头文件实际所在绝对路径,绝对路径比相对路径更稳定 include_directories(C:/Sandbox/Software/RABBIT/UVTrolley/Ver01.6/ItemData)修正动态库编译和链接配置,假设你的App原生主库名为
native-lib(默认创建项目的命名,可替换为你自己的库名):add_library(ItemData SHARED # 直接用绝对路径指定C文件位置,避免相对路径寻址错误 C:/Sandbox/Software/RABBIT/UVTrolley/Ver01.6/ItemData/itemdata.c) # 将ItemData库链接到你的App原生主库,不要只写target_link_libraries(ItemData) target_link_libraries( native-lib ItemData )同步项目后重新构建即可。
内容的提问来源于stack exchange,提问作者Alessandro Cinque
相关产品推荐
相关产品推荐

