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。就不会报错。

相关推荐
诸神黄昏EX12 分钟前
Android OTA 之 升级包编译机制
android
2501_915909061 小时前
苹果iOS应用上架详细流程与注意事项解析
android·ios·小程序·https·uni-app·iphone·webview
AC赳赳老秦2 小时前
跨境科技服务的基石:DeepSeek赋能多语言技术文档与合规性说明的深度实践
android·大数据·数据库·人工智能·科技·deepseek·跨境
晚霞的不甘2 小时前
解决 Flutter for OpenHarmony 构建失败:HVigor ERROR 00303168 (SDK component missing)
android·javascript·flutter
2501_944521592 小时前
Flutter for OpenHarmony 微动漫App实战:分享功能实现
android·开发语言·javascript·flutter·ecmascript
kekegdsz3 小时前
Android构建优化:编译速度从 10 分钟编译到 10 秒
android·性能优化·gradle
2501_944521593 小时前
Flutter for OpenHarmony 微动漫App实战:标签筛选功能实现
android·开发语言·前端·javascript·flutter
mjhcsp3 小时前
如何做一个网站?
android
2501_915909063 小时前
在无需越狱的前提下如何对 iOS 设备进行文件管理与数据导出
android·macos·ios·小程序·uni-app·cocoa·iphone
_F_y4 小时前
MySQL表的增删查改
android·数据库·mysql