版权声明:本文为博主原创文章,未经博主允许不得转载。
本文纯个人学习笔记,由于水平有限,难免有所出错,有发现的可以交流一下。
在 Android Studio 中使用第三方的 so 库
Android Studio 新建安卓项目,在 app 下默认有一个 libs 文件夹,把 so 库拷贝到 libs 下面,需要自己进行一定配置。
1.在 app 下的 build.gradle 的 android 下添加配置,然后重新编译。
sourceSets.main {
jniLibs.srcDirs = ['libs']
jni.srcDirs = []
}
build.gradle 位置:
添加配置:
2.需要在 CMakeLists 中进行配置
在引用第三方 so 库的时候,我们自己生成的 so 库要链接到第三方的 so,所以我们需要进行一个动态库链接的配置。
选取项目显示为安卓工程, CMakeLists 存放在 app路径下。
CMakeLists :
cmake_minimum_required(VERSION 3.4.1)
find_library( # Sets the name of the path variable.
log-lib
log )
#设置so库路径
set(my_lib_path ${CMAKE_SOURCE_DIR}/libs)
#讲第三方库作为动态库引用
add_library( native-lib
SHARED
IMPORTED )
#指名第三方库的绝对路径
set_target_properties( native-lib
PROPERTIES IMPORTED_LOCATION
${my_lib_path}/${ANDROID_ABI}/libnative-lib.so )
add_library( # Sets the name of the library.
native
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/native-lib.cpp )
target_link_libraries( # Specifies the target library.
native
native-lib
${log-lib} )
CMakeLists 中 添加对第三方 so 库的引用,指定路径,添加到链接中。
修改完后需要进行重新 Rebuild Project,否则编辑器可能仍然提示错误。
3.导入对应的第三方库的头文件。
这边把 CMakeLists 中要进行添加的地方圈出来。
异常
1.缺少其他平台库
在配置完上面的步骤后,进行编译时候可能报错。
Build command failed.
Error while executing process F:\soft\Android\Studio\SDK2.3\cmake\3.6.4111459\bin\cmake.exe with arguments {–build C:\Users\ZX\Desktop\AndFixTest\app.externalNativeBuild\cmake\debug\x86_64 –target native-lib}
ninja: error: ‘../../../../libs/x86_64/libandfix.so’, needed by ‘../../../../build/intermediates/cmake/debug/obj/x86_64/libnative-lib.so’, missing and no known rule to make it
这是由于导入的第三方 so 库没有包含全平台,所以编译时候过不去,这时候需要指定 so 库文件的平台,在 app 下的 build.gradle 中进行修改。
abiFilters 后面配置 so 对应的平台,修改完成之后需要重新 Rebuild Project。