例一:
http://www.cnblogs.com/skyseraph/archive/2012/03/20/2407593.html
其中使用javah生成.h文件的命令(cmd命令):
其中android.mk文件详细参数解析:
<span style="font-size:18px;">LOCAL_PATH:=$(call my-dir)
//必须,用于在开发树中查找源文件,宏函数‘my-dir’,由系统提供,用于返回当前路径(即包含Android.mk文件的目录)
include $(CLEAR_VARS)
//必须,clear_vars由编译系统提供,指定让GNU_MAKEFILE为你清除许多LOCAL_XXX变量(例如LOCAL_MODULE,
//LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES等)
LOCAL_SRC_FILES := com_testjni_TestJNI.c
//必须,包含要编译打包进模块中的C或C++源代码文件(无需列出头文件和包含文件)
LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
//说明包含的头文件,这里需要包含JNI的头文件
LOCAL_MODULE := libtestjni
//当前模块的名称/编译的目标对象,编译系统会自动产生合适的前缀和后缀
LOCAL_SHARED_LIBRARIES := libutils
//当前模块需要依赖的共享库
LOCAL_PRELINK_MODULE := false
//指明该模块是否被启动就加载,此处不需要prelink,所以置为false
include $(BUILD_SHARED_LIBRARY)
//build_shared_library表示编译生成共享库,是编译系统提供的变量,
//指向一个GNU Makefile脚本,负责收集自上次调用include $(clear_var)以来,定义在local_xxx变量中的所有信息,
//并且决定编译什么,如何正确地去做。还有build_static_library变量表示生成静态库:lib$(local_module).a,
//build_executable表示生成可执行文件。</span>
其中打包成.so文件的命令(借助于cygdrive工具)也可以这样写:(先将项目拷贝到android-ndk-r8d/samples目录下)
例二:
http://blog.youkuaiyun.com/xyz_lmn/article/details/6955031
native方法实现步骤如下:
1、在Java中声明native()方法,然后编译(javac);
2、用javah产生一个.h文件;
3、编写包含.h文件的c文件
4、编译c文件
5、使用编译成功的so文件。