首页 > 代码库 > Android Jni(Java Native Interface)笔记

Android Jni(Java Native Interface)笔记

首先记录一个问题,关于如何用javah生成头文件的。

总是提示“无法访问android.app.Activity”,网上查了说是要指定android.jar的位置,可以在classpath里指定,也可以在命令中直接指定。在windows下两种都试了,都不行。于是装ubuntu。装ubuntu挺麻烦,一开始想用wubi在windows下安装,失败。后来用了某个启动器在硬盘安装。还有分配swap,根目录/,home目录的大小。。真是难倒外行人。安装好了之后试了一下,好像还是不行。。

再百度。在csdn上找到答案。按照链接里11楼的说法,要这么写:

javah -classpath bin/classes -bootclasspath /home/larry/adt-bundle-linux-x86-20140702/sdk/platforms/android-20/android.jar -d jni com.example.hellojni.MainActivity

 -classpath后面跟着的bin/classes指定的就是class的path,这里我是创建了一个HelloJni的项目,包名是com.example.hellojni,里面有一个Activity是MainActivity,我是在Hellojni目录下执行上面的命令的,所以要跟bin/classes指定类目录;

-bootclasspath我猜想是引导后面的android.jar这一参数用的。之前搜了很多答案都没有提到这个。大多数是直接用这个android.jar的路径后面上一个冒号,然后就跟了类的地址。

-d jni代表把生成的h文件放到根目录的jni文件夹里面。

另外一种方法,按照12楼的说法,我还试了把android.jar添加到classpath里去,不行,还是提示无法访问android.app.Activity,可能是我加classpath的方式不对?不得而知,不去整了。

图在这里:

下面重新开始学习JNI。。

----------------------------------------------------------------------------------

找到一篇这个人的笔记,觉得写得很好,就按照他的来试试吧。