开发环境: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中,命令执行后生成的文件不能立即显示出来,需要刷新一下!