首先记录一个问题,关于如何用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。。
----------------------------------------------------------------------------------
找到一篇这个人的笔记,觉得写得很好,就按照他的来试试吧。
Android Jni(Java Native Interface)笔记