Android——NDK开发配置遇到的问题

通常我们在含有native的类的静态块里面加载jni库

static{
    System.loadLibrary("HelloNDK");
}

相对应要修改Module下的build.gradle配置文件,指明gradle建立的.so文件名:
Android——NDK开发配置遇到的问题_第1张图片

 ndk {
            moduleName "HelloNDK"//和上面的静态加载库中的字段要一致
            ldLibs "log", "z", "m"
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }

有时候会出现报错,提示当前的插件已经废弃了整合进来的NDK,也就是该NDK被废弃了

Error:(13, 0) Error: NDK integration is deprecated in the current plugin.  Consider trying the new experimental plugin. 

那么需要在gradle.properties文件里加上这么一句,表示使用被废弃的NDK

android.useDeprecatedNdk=true

在Android Studio 中生成JAVA层对应JNI层头文件的方法,首先写好包含native方法的类文件,然后进行Build->make project,然后会在当前Module下的\build\intermediates\classes\debug下面生成包级的class文件,如图红线标出的最后一段是包目录结构,在最下面可以看到生成的.class文件
这里写图片描述

然后在终端里,切换到项目/app/src/main目录
然后执行javah指令:

//-d 目录,设置 javah 保存头文件的目录。这里直接保存到了当前文件夹下面的jni目录下,也就是/src/main/jni下面

javah -d jni -classpath  sdk目录/platforms/android-[?,编译版本]/android.jar;../../build/intermediates/classes/debug/ [包目录,比如我的是com.sky.nettest].HelloNDK

然后会在工程目录下自动生成一个jni文件夹,里面包含一个写好的.h头文件

你可能感兴趣的:(android,NDK)