Bevis的博客

若有不足之处,请多多指教。

Android Studio 关于 Cmake 的使用 —— 引用第三方库文件

转载请注明出处。 https://blog.csdn.net/ma598214297/article/details/78387847
本篇主要介绍如何使用已经建好的库文件(包括动态和静态库文件)。
需要了解如何构建 C/C++ 工程的请点击这里

第一步,构建支持C/C++的工程

第二步,把已经构建好的库加入工程(注意路径)

我加入的位置与app同一个父级目录。

这里写图片描述

第三步,配置CmakeList.txt信息

直接附上代码以及详细的注释,相信大家都可以很快清楚cmake脚本语言的含义。

与创建库文件一样在add_library()中第一个参数为库的名字,第二个参数SHARE表示动态库so,STATIC表示静态库.a。

set_target_properties()是用来链接你的库文件,与add_library()配套使用,第一个参数为库名字,最后一个参数代表文件路径。

target_include_directories() 第一个参数为当前工程新建的总库文件名,用PRIVATE隔开,后面的参数为需要链接的第三方库的头文件。

cmake_minimum_required(VERSION 3.4.1)  

set(CMAKE_VERBOSE_MAKEFILE on)  
# set()用来设置一个路径全局变量 distribution_DIR  
set(distribution_DIR ${CMAKE_SOURCE_DIR}/../libBuild)  

# 创建一个静态库 lib_one 直接引用libone.a  
add_library(lib_one STATIC IMPORTED)  
set_target_properties(lib_one PROPERTIES IMPORTED_LOCATION  
    ${distribution_DIR}/one/lib/${ANDROID_ABI}/libone.a)  

# 创建一个动态库 lib_two 直接引用libtwo.so  
add_library(lib_two SHARED IMPORTED)  
set_target_properties(lib_two PROPERTIES IMPORTED_LOCATION  
    ${distribution_DIR}/two/lib/${ANDROID_ABI}/libtwo.so)  

#创建总的库native-lib并链接一个.c文件,可以直接引用第三方库的头文件  
add_library(native-lib SHARED  
            ${CMAKE_SOURCE_DIR}/src/main/cpp/native-lib.c)  
#链接第三方库的头文件  
target_include_directories(native-lib PRIVATE  
                           ${distribution_DIR}/one/include  
                           ${distribution_DIR}/two/include)  


find_library( log-lib  
              log )  

#把所有库文件都引入工程  
target_link_libraries( native-lib  
                       android  
                       lib_two  
                       lib_one  
                       # Links the target library to the log library  
                       # included in the NDK.  
                       ${log-lib} )  

然后build一下工程,编译通过的话,OK,这些库文件就全部导入成功了。

追加一点,一定要注意module 级gradle的配置,不要忘了加入你的lib的路径。

android{

sourceSets {

    main {
        // let gradle pack the shared library into apk
        jniLibs.srcDirs = ['../libBuild/two/lib']
    }
}
}

下面可以验证一下so库是否何如app,首先build apk,然后打开视图,看lib文件夹下是否已经有你需要的so。

这里写图片描述

下面关于带头文件的so/.a如何使用就十分简单了。

进入你cpp文件夹下的native-lib.c,include一下,你会发现这些与库文件配套的头文件自动弹出了,这就代表引用成功了

相信以上代码可以解决各位Android studio使用CMAKE引用第三方库遇上的大部分问题,如果接下来有时间,我会仔细研究一下cmake配置脚本,简单的处理一下语法问题。

阅读更多
个人分类: Android
上一篇Android 开发问题 —— 使用 ndk-build 编译 so 文件报 APP_ALLOW_MISSING_DEPS=true 错误
下一篇Flutter —— Windows 平台下的环境搭建及问题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭