android开发---3.linux 下使用 javah生成头文件

来源:互联网 发布:eia数据汇总 编辑:程序博客网 时间:2024/06/04 23:51
linux 下使用 javah生成头文件

root@ubuntu:/works/sdk/android-ndk-r7/samples/hello-jni# tree
  1. ├── AndroidManifest.xml
  2. ├── assets
  3. ├── bin
  4. │ ├── AccelerometerPlayActivity.apk
  5. │ ├── classes
  6. │ │ ├── com
  7. │ │ │ └── example
  8. │ │ │ └── hellojni
  9. │ │ │ ├── HelloJni.class
  10. │ │ │ ├── R$attr.class
  11. │ │ │ ├── R.class
  12. │ │ │ └── R$string.class
  13. │ │ └── com_example_hellojni_HelloJni.h
  14. │ ├── classes.dex
  15. │ ├── res
  16. │ └── resources.ap_
  17. ├── jni
  18. ├── obj
  19. ├── project.properties
  20. ├── src
  21. │ └── com
  22. │ └── example
  23. │ └── hellojni
  24. │ └── HelloJni.java
  25. └── tests


当用 java 调用c代码时, c代码的函数名要符合一定的规则: 包名_类名_函数名

用javah 可以生成这样的头文件,以 android-ndk-r7/samples/hello-jni/ 为例,记录一下javah的使用方法,防止下次出现这个问题的时候还要google

出现了多次这个问题:

error: cannot access com.example.hellojni.HelloJni

class file for com.example.hellojni.HelloJn not found

javadoc: error - Class com.example.hellojni.HelloJn not found.

Error: No classes were specified on the command line.  Try -help.

1. 首先hello-jni/src/com/example/hellojni/HelloJni.java 先用eclipse编译一下,生成HelloJni.class,eclipse编译完成之后,可在 hello-jni/bin/classes/com/example/hellojni/HelloJni.class 找到 HelloJni.class

2. 进入 hello-jin/bin 目录,使用

   javah -classpath . -jni com.example.hellojni.HelloJni

 其中:

   -classpath 指定javah用来查找类的路径

   -jni 使 javah 创建一输出文件

   com.example.hellojni.HelloJni 这个应该是把路径中的/改为.了吧, java不熟

参考文章:http://www.cnblogs.com/charley_yang/archive/2011/03/13/1983038.html
0 0