按照《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 查阅。
本文详细介绍了在Java环境下,如何通过JNI(Java Native Interface)与C/C++代码进行交互的过程。从创建Java类、编译生成class文件,到使用javah工具生成C/C++头文件,再到指定目录下生成头文件的具体步骤,为开发者提供了实用的指导。
2212

被折叠的 条评论
为什么被折叠?



