AndroidNDK开发中使用CMake编译JNI

AndroidNDK开发中使用CMake编译JNI,第1张

概述虽然一直在做NDK的开发工作,但是由于项目比较久远,都是使用Makefile进行底层编译,对于目前AndroidStudio官方提供的CMake编译方式并不是很了解,现在学习下这种已经不算新潮的新方式

  虽然一直在做NDK的开发工作,但是由于项目比较久远,都是使用Makefile进行底层编译,对于目前AndroIDStudio官方提供的CMake编译方式并不是很了解,现在学习下这种已经不算新潮的新方式,也算是与时俱进了。

  先说下需要涉及到的相关文件,底层必备的c源码,上层调用的Java/Kotlin文件,AndroIDStudio使用Gradle编译的build.gradle文件,以及CMake编译索要使用的CMakeLists.txt配置文件。

关于c和java文件都不用细说了,做NDK开发的话这些都是正常编码流程。先说下在build.gradle中关于CMake的配置。在androID.externalNativeBuild.cmake{}中可以使用path配置CMakeLists.txt的路径,如下:

 1@H_502_9@ externalNativeBuild { @H_502_9@2@H_502_9@ cmake { @H_502_9@3@H_502_9@ path "CMakeLists.txt" 4@H_502_9@ } @H_502_9@5@H_502_9@ }@H_502_9@ 

 

同时使用androID.defaultConfig.ndk{}配置abi生成不同平台下的so库版本,如下

ndk{@H_502_9@2@H_502_9@ 3@H_502_9@     //@H_502_9@ 设置支持的 SO 库构架,这里要根据实际情况来设置@H_502_9@4@H_502_9@ 5@H_502_9@     abiFilters 'armeabi','armeabi-v7a','arm64-v8a','x86','x86_64','mips','mips64'6@H_502_9@ 7@H_502_9@ }

 

 

只要关联到使用的CMakeLists.txt配置文件,其他的编译问题都交给配置文件处理就好了。关于CMake的配置学习主要参考官网文档:https://cmake.org/cmake-tutorial/

在这里主要说下指定生成so库的方法,如果不指定的话默认是在app/build/intermediates/cmake/deBUG/obj/${ANDROID_ABI}下生成。也可以使用指令设置:

 #设置生成的so动态库最后输出的路径 @H_502_9@3@H_502_9@ set(CMAKE_liBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/libs/${ANDROID_ABI})@H_502_9@ 

再有用到的就是指定头文件搜索路径,头文件路径一般比较多的话在不同路径之间使用空格分离:

#设置头文件搜索路径(和此txt同个路径的头文件无需设置)INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}@H_502_9@/src/main/cpp/include)

 

注意,以上的配置一定要在addlibrary()之前定义,否则也是不起效果的。

其他注意事项有遇到时再添加。

 

总结

以上是内存溢出为你收集整理的AndroidNDK开发中使用CMake编译JNI全部内容,希望文章能够帮你解决AndroidNDK开发中使用CMake编译JNI所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1119334.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存