使用NDK进行JNI编程与实践二:优化Android studio来进行ndk-build开发

一、 引入:
在JNI开发中,使用javah和ndk-build组合来进行JNI开发的过程比较麻烦,这里介绍一下使用高版本的gradle优化JNI开发,我的环境如下:
Android studio:3.5;
gradle:5.4.1;
可在任意工程的File->Project Structure查看:
使用NDK进行JNI编程与实践二:优化Android studio来进行ndk-build开发_第1张图片
二、 优化,引入Link C++ Project With Gradle:

  1. 点击file,选择Link C++ Project With Gradle:
    使用NDK进行JNI编程与实践二:优化Android studio来进行ndk-build开发_第2张图片
  2. 在弹框中选择ndk-build,并在Project Path中选择Android.mk的路径:
    使用NDK进行JNI编程与实践二:优化Android studio来进行ndk-build开发_第3张图片
    配置好了之后,我们就可以直接使用Android studio的Make Project来编译工程了,在编译java文件的过程中也会把jni下面的文件给编译了,不需要我们再通过cmd去执行ndk-build指令来编译so库了,并且,编译完成之后,不会生成libs和obj等文件夹,生成的so会直接打包到apk中当中,非常方便,我们可以在build目录中找到这些库;
    另外一个特点是,打开了这个支持以后,我们能够在进行C/C++代码编写的时候自动提示,非常方便,大大提高了效率:
    使用NDK进行JNI编程与实践二:优化Android studio来进行ndk-build开发_第4张图片
    三、 兼容第三方库:
    我们自己编写的JNI库是可以直接通过这种方式打包到apk中,但是如果遇到需要加载第三方库到apk中是,是否可行呢?经过测试,也只需要在app的build.gradle里面指定libs路径就行了:
   sourceSets {
        main {
            jni.srcDirs = ['src/main/jni', 'src/main/jni/']
            jniLibs.srcDirs = ['libs']
        }
    }

第三方库和自己编写的JNI库完全可以一起编译进apk中,并不冲突。

你可能感兴趣的:(Android技术)