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

简介

在使用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$

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值