Android Cmake 增加第三方库的依赖

本文介绍了如何在Android项目中集成XLog库,包括在build.gradle中添加依赖,配置CMakeLists.txt以查找并链接marsxlog动态库,以及处理so文件的复制和头文件的导入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里以xlog 为例子 

修改 build.gradle

这部分的代码是要添加xlog的依赖,也增加拷贝脚本,作用是把 mars-xlog 包里面的 so文件拷贝到 src/main/jniLibs 文件夹。

configurations {
    cmake_depends
}
dependencies {
    api "com.tencent.mars:mars-xlog:1.2.5"
    cmake_depends "com.tencent.mars:mars-xlog:1.2.5"
}
// 这个task 的作用是把 xlog 包里面的 so文件拷贝到 src/main/jniLibs 文件夹
task copyXlogSo {
    project.configurations.each { configuration ->
        if ("cmake_depends".equalsIgnoreCase(configuration.name)) {
            def lib = configuration.resolve()[0]
            copy {
                from zipTree(lib)
                into "${project.rootDir}/${project.name}/src/main/jniLibs/"
                include "jni/**/*.so"
            }
        }
    }
}
build.dependsOn copyXlogSo

执行build后,我们就可以看到在 src/main/jniLibs 增加了 xlog 的 so 文件,这里的so文件仅仅只是参与到编译过程,不会打包到apk,apk关联的还是mars-xlog.aar带有so文件。

src
└── jniLibs
    └── jni
        ├── arm64-v8a
        │   ├── libc++_shared.so
        │   └── libmarsxlog.so
        └── armeabi-v7a
            ├── libc++_shared.so
            └── libmarsxlog.so
修改 CMakeLists.txt

这部分的代码是为了查找并链接 marsxlog 动态库

cmake_minimum_required(VERSION 3.10.2)
project("xlog")

include_directories(export_include)

add_library(native-lib SHARED native-lib.cpp)

# 设置 xmlog 动态库 copy出来的文件夹
set(XLOG_PATH ../jniLibs/jni/${ANDROID_ABI}/)
# 从 jniLibs 查找对应平台的marsxlog so 
find_library(XLOG_LIB marsxlog PATHS ${XLOG_PATH} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
# 链接 marsxlog 动态库
target_link_libraries(native-lib ${XLOG_LIB})
导入头文件

从 mars 的仓库下载 xlog 的头文件,放到 cpp/export_include/xlogger 目录下,只需要4个头文件,其它文件都不需要。

├── CMakeLists.txt
├── export_include
│   └── xlogger
│       ├── android_xlog.h
│       ├── preprocessor.h
│       ├── xlogger.h
│       └── xloggerbase.h
└── native-lib.cpp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值