美文网首页Android NDK开发
NDK开发(八)--自动生成JNI头文件

NDK开发(八)--自动生成JNI头文件

作者: 骑着蜗牛闯世界666 | 来源:发表于2019-11-24 23:14 被阅读0次

    简介

    在使用NDK开发过程中,对于我们声明的native方法,都是需要进行静态注册的,实现的方法可以是根据类型签名的规范进行实现,也可以使用javah来帮我们自动生成。自己手写的方式,很容易一不小心就写错了,所以一般都是使用javah的方式,我们之前在使用的时候,步骤都是这样子的,

    javac com/example/Test.java
    javah com.example.Test
    

    然后将在当前目录生成的头文件拷贝到对应的位置,虽然也能够减小出错的概率,但是流程上还是比较繁琐复杂。
    其实AS为我们提供了更加快捷方便,不易出错的实现方式,只需简单配置即可。

    例子

    譬如下面的例子,我们在JniData声明了我们需要使用到的两个jni方法,中间就是自动生成的头文件。那这个文件是怎样生成的呢?

    -w1552

    配置

    快捷键commend + ,调出设置界面,选择Tool--External Tools,选择 “+”进行新增,

    -w1202

    根据自己的喜好填写 Name、Group、Description参数,另外几个重要的参数,需要按照规范来。

    • 1、Program

    填写javah即可,表示使用javah命令

    • 2、Arguments

    我这里填写的是-v -jni -d $ModuleFileDir$/src/main/cpp/head $FileClass$,表示在main里面的cpp路径下创建head文件夹,并存放生成的头文件。

    -w444
    各个参数的含义如图,其中-cp 和-classpath 其实是同个配置,只不过前者是后者的缩写而已,ModuleFileDir表达当前的工程目录。
    • 3、Working dirctory

    工作目录,填写$SourcepathEntry$即可,表示你的源码目录位置。

    使用

    选中需要生成头文件的类,右键选择ExternalTools,选择我们添加的javah,之后就可以看到在对应的目录已经生成所需要的头文件了。

    -w820

    其他

    在使用的过程中,当jni里面遇到用了一个Android里面的类,会出现报错,找不到类的情况。这是因为我们没有配置classpath到Arguments里面,只需要新增对应的环境变量即可。

    -classpath "$Classpath$:$ModuleFileDir$/src/main/java" -v -jni -d $ModuleFileDir$/src/main/cpp/head $FileClass$
    

    如上,路径使用""包括起来,如果有多个路径的情况,需要以:进行分割。

    相关文章

      网友评论

        本文标题:NDK开发(八)--自动生成JNI头文件

        本文链接:https://www.haomeiwen.com/subject/ygirwctx.html