当生成java类,并且使用javac编译以后,生存JniDemo.class文件。比如此时所在的路径是XXX/src/com/example/hellojni。你的class文件就在这个hellojni文件夹里面,此时如果你直接在这个目录下使用javah命令,则会出现如下错误:
错误: 无法访问 com.example.hellojni.JniDemo
找不到文件com.example.hellojni.JniDemo.classjavadoc: 错误 - 找不到类com.example.hellojni.JniDemo。
Error: 未在命令行中指定任何类。请尝试使用 -help。
如图所示 :
解决方案 :
此时,你可以返回到src目录,然后再执行javah com.example.hellojni.JniDemo .
如图 :
此时的目录是src,然后执行javah , 注意要加上完整的包名。最后生成了.h文件。
在C文件中实现该头文件中声明的方法,然后写完Android.mk文件。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hellojni
LOCAL_SRC_FILES :=helloJni.c
include $(BUILD_SHARED_LIBRARY)
最后到cygwin 命令终端下,切换到项目主目录,比如我们这里是D:\JavaProFor64\HelloWorld,然后执行$ndk/ndk-build 命令即可编译。
最后.so动态库文件会在D:\JavaProFor64\HelloWorld\libs\armeabi中存放。