JNI使用javah命令给java文件自动生成.h文件

开发环境:Mac+AndroidStudio Terminal

需要生成头文件的类的路径: 

/Users/pcyfox/AndroidStudioProjects/test/XiniuCloud/mail_android/app/src/main/jni/test/test.cpp

 

javah命令使用(在AndroidStudio Terminal中使用):

 javah -classpath /Users/pcyfox/AndroidStudioProjects/xx/xx/mail_android/app/src/main/java  -d jh com.xx.xx.test.ReceiveMessageImpl

 命令说明:

1、classpath: 是指只要是在该工程目录下包含com.xx.xx 包名的目录,例如:

 /Users/pcyfox/AndroidStudioProjects/xx/xx/mail_android/app/src/main/java

也可以是

/Users/pcyfox/AndroidStudioProjects/xx/xx/mail_android/app/src/main

也可以是

/Users/pcyfox/AndroidStudioProjects/xxxx/mail_android/app/src

 

2、 -d :头文件的输出文件夹名称(该文件出现在命令中设定的·classpath路径下)如上面的:jh

 执行上面的命令后生成头文件所在路径:

 /Users/pcyfox/AndroidStudioProjects/xx/xx/mail_android/app/src/main/java/jh

(注:生成文件后IDE中可能不能立即看到,需要手动去查看,我就是被这个坑了很久!)

 

3、最后是需要生成头文件的类,必需是包含报名的全称。

com.x'x.xx.test.ReceiveMessageImpl

 

4、当包含Android特有的类(如Bitmap)时classpath需要添加SDK中的android.jar路径例如(未实测过!):

/Users/pcyfox/Library/Android/sdk/platforms/android-23/android.jar

例如:

 javah -classpath /Users/pcyfox/Library/Android/sdk/platforms/android-23/android.jar:/Users/pcyfox/AndroidStudioProjects/xx/xx/mail_android/app/src/main/java  -d jh       com.xx.xx.test.ReceiveMessageImpl

注意在MAC多个classpath是用冒号“:”,在吻到死上是分号“;”

 

总结:前面的都是在扯蛋

正确姿势:前提java版本大于1.6

直接cd到项目的src/mian/java 在java文件夹上右键打开命令窗口执行   javah  包名.类名(不带后缀)

总之命令使用十分简单,最大的坑就是在AndroidStudio中,命令执行后生成的文件不能立即显示出来,需要刷新一下!

 

 

 

你可能感兴趣的:(Android基础)