(八)Android Studio 中使用第三方的 so 库

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文纯个人学习笔记,由于水平有限,难免有所出错,有发现的可以交流一下。

在 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。

猜你喜欢

转载自blog.csdn.net/qq_18983205/article/details/79068715