按照《Android 开发艺术探索》的方式直接照抄别人的命令是不行的,我的开发环境是 Java 环境而不是 Android,所以各种路径跟 Android 项目稍有区别。
首先,我在 me/shouheng/jni 目录下面创建一个类文件 JniTest.java,那么该文件的包名也相应地变成 me.shouheng.jni。然后,我们在 jni 目录下面使用命令
javac JniTest.java
可以直接在当前的目录下面生成 JniTest.class。然后,我需要使用该 class 文件生成一个 .h
头文件。我试了许多方式都不行,最后总结的规律是,比如我的类路径是 me.shouheng.jni
而且该 class 文件也在 me/shouheng/jni
目录下面,那么我可以在 me
文件夹的父路径下面使用指令:
javah -classpath . -jni me.shouheng.jni.JniTest
来生成 .h
头文件。不论你是在 Build 之后的目录的根目录,还是按照我们上面的方式生成 class 之后的根目录皆可。只需要到包的根目录下面,并且保证在包的路径下面存在编译后的 class
文件即可。上面的方式会在当前的目录下面生成头文件,如果希望到指定的目录下面生成也是可以的,可以通过:
javah -d me/shouheng/jni -classpath . -jni me.shouheng.jni.JniTest
让生成的头文件在 me/shouheng/jni
目录下面,这里 -d
用来指定生成的头文件的文件夹。关于 javac
和 javah
的参数的可以直接在命令行里输入 javac
或者 javah
查阅。