一、前提
阅读上一篇文章Android JNI系列详解之CMake编译工具的使用,里面讲到了需要配置两个文件:CMakeList.txt和build.gradle
二、配置CMake编译工具输出库文件的路径
1.默认的库文件输出路径:app/build/intermediates/cmake/debug/obj
由此可见不便于每次查找,因此我们需要将这个路径配置到我们自定义的路径。
2.设置库文件的输出目录
只需要在CMakeList.txt文件中写如下代码:
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI})
这是我在项目中加的代码
含义:
# CMAKE_CURRENT_SOURCE_DIR 是指 cmake库的源路径,通常是build/.../cmake/
# /../jniLibs/ 是指与CMakeList.txt所在目录的同级目录:jniLibs (如果没有会新建)
# ANDROID_ABI 生成库文件时,采用gradle配置的ABI策略(即:生成哪些平台对应的库文件)
加完上面的配置输出路径的代码之后,我们将项目Make一下,就会生成如下目录:
也就是CMakeList.txt所在目录(cpp目录)的同级目录。
异常情况:
到这里我项目是能正常跑通的,没有遇到一个错误:more then one file was found with OS independent path 'lib/armeabi-v7a/libtestnative'
如果遇到了,意思是有重复的库文件,就是build下有一份会被加载进项目,jniLibs这个指定的目录也会加载进项目。只需要改个名字就行,保证只引用一个地方就行,如jniLibsss。就不会报错。