使用javah命令根据native方法生成头文件
在项目上右键-->新建文件夹名字为jni,打开cmd,进入项目所在目录(我的目录E:\eclipse4.5workspace\NDKProject),执行javah命令,可以先看下javah命令的一些参数:
OK,然后我们输入:javah -classpth bin/classes -d jni com.lhq.ndkproject.MainActivity,我们来解释下这句命令:
使用javah命令,指定你要加载的类的文件目录(-classpath),然后指定头文件文件输出目录(-d jni,指定到jni目录,因为我们前面新建了jni的文件夹,不新建也行,它会自动创建,在你执行javah命令的目录下),然后加上JavaNative代码所在类的完整类名(包名+类名,所以,上面的classpath的参数注意了,输入到你要生成的头文件的源文件所在的目录,不然会找不到),然后回车
但是出错了,说找不到activity,因为我们这个native方法是写在MainActivity里面的,但是MainActivity是继承了Activity的,它找不到Activity这个类(如果native方法是写在一个单独Java文件中,不会出这个错),我们更改下命令在bin/classes目录后加一个分号,然后去把Activity加进来,那怎么加进来呢?,去你的sdk目录下的platforms中随便找一个版本的然后进去,比如我进入的是android-21,然后目录下有个android.jar文件,我们要的就是它,复制下文件路径,在刚才命令classes的分号后面粘贴(如果是单独的Java文件就不需要这样),然后执行命令
再进入Eclipse刷新一下,在jni目录下多了一个.h的头文件
配置自动编译
到目前为止,我们的ndk项目就能正常运行了,但是,我们每改一次c代码都要手动的用ndk-build编译,那我们来配置下自动编译:
在项目上右击,然后选择properties,然后在弹出窗口中选择Builders,再点击new
然后选择Program点击ok
然后点击Browse File System
选择ndk目录下的ndk-build.cmd文件
OK,再配置下Working Direcroty,点击Browse Workspace选择自己的项目
OK,然后点击Build Optionsg勾选During auto builds然后点击OK,到此为止,项目就不用每次都手动ndk-build了
链接:https://www.jianshu.com/p/d768986dee56