Android JNI系列详解之CMake配置库文件的输出目录

一、前提

阅读上一篇文章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。就不会报错。

相关推荐
xvch1 小时前
Kotlin 2.1.0 入门教程(二十三)泛型、泛型约束、协变、逆变、不变
android·kotlin
ianozo2 小时前
BUU40 [安洵杯 2019]easy_serialize_php
android·开发语言·php
abs6253 小时前
uniapp使用uts插件启动原生安卓Service
android·uni-app·uniapp uts插件·uniapp 安卓服务
Evaporator Core3 小时前
MATLAB在投资组合优化中的应用:从基础理论到实践
android
Neo Evolution4 小时前
Flutter与移动开发的未来:谷歌的技术愿景与实现路径
android·人工智能·学习·ios·前端框架·webview·着色器
coooliang4 小时前
Flutter项目中设置安卓启动页
android·flutter
xianrenli384 小时前
android 使用 zstd算法压缩文件
android
九思x4 小时前
Android Studio安装配置及运行
android·ide·android studio
风浅月明16 小时前
[Android]如何判断当前APP是Debug还是Release环境?
android
freflying111916 小时前
使用jenkins构建Android+Flutter项目依赖自动升级带来兼容性问题及Jenkins构建速度慢问题解决
android·flutter·jenkins