AndroidStudio+NDK(JDK版本9.0.1)

  1. 配置NDK的环境变量,JDK我下载的最新的版本9.0.1 ,可以使用dos命令java -version来查看自己的JDK版本,NDK配置 AndroidStudio+NDK(JDK版本9.0.1)_第1张图片
    检验是否配置成功如果出现这个那就成功了这里写图片描述

  2. 创建java类JniUtils声明一个native的方法 AndroidStudio+NDK(JDK版本9.0.1)_第2张图片

  3. 使用AS自带的命令行工具(Terminal)通过javac命令编译生成.class文件 这里写图片描述
    注意只要路径没问题,直接回车不报错这说明就成功生成了!AndroidStudio+NDK(JDK版本9.0.1)_第3张图片

  4. 接下来就是编译生成头文件了,其实前几个步骤网上有很多帖子,大家一搜就很多哦,我之所以决定重新再写一篇博客是因为JDK升级以后的版本javah这个命令被javac -h替代了,所以决定把它分享出来,让更多人可以少踩一点坑
    按照以前的javah命令做的话如下图所示
    AndroidStudio+NDK(JDK版本9.0.1)_第4张图片
    JDK会提示你使用新的命令来使用javah,但是如果直接把javah换成javac -h就成功了吗,未必,看图

    这里写图片描述
    这个时候报错了,可是奇怪的是.h也生成了,但是既然报错这就说明肯定还是命令有问题,于是我就百度报错的原因,好多人说编译java文件需要写后缀名,先放一张语法图

    javac -h的用法

    于是我又重新改成了这样
    这里写图片描述

    当然就成功生成了头文件,刷新一下就出来了
    AndroidStudio+NDK(JDK版本9.0.1)_第5张图片
    但是还没完,这里有个重要的问题是jni文件的位置,应该与java同级,在main下面,不然编译的时候会找不到所以我把他拖拽出来
    AndroidStudio+NDK(JDK版本9.0.1)_第6张图片

    5.现在该编写.c文件了,只要将.h里面未实现的方法粘过来实现它就可以 AndroidStudio+NDK(JDK版本9.0.1)_第7张图片
    6.编写Android.mk
    AndroidStudio+NDK(JDK版本9.0.1)_第8张图片
    Application.mk
    AndroidStudio+NDK(JDK版本9.0.1)_第9张图片
    7. 使用ndk-build编译.so库,先cd到jni文件夹的上一级 cd app\src\main然后ndk-build

    AndroidStudio+NDK(JDK版本9.0.1)_第10张图片
    libs下面直接就有生成的so
    AndroidStudio+NDK(JDK版本9.0.1)_第11张图片
    8.运行
    AndroidStudio+NDK(JDK版本9.0.1)_第12张图片
    gradle配置加载so库
    sourceSets{
    main{
    jni.srcDirs = [] // disable automatic ndk-build call, which ignore our Android.mk
    jniLibs.srcDir 'src/main/libs'
    }
    }

你可能感兴趣的:(jni)