NDK项目源码地址 :
-- 第一个JNI示例程序下载 : GitHub - https://github.com/han1202012/NDKHelloworld.git
-- Java传递参数给C语言实例程序 : GitHub - https://github.com/han1202012/NDKParameterPassing.git
--C语言回调Java方法示例程序 : GitHub - https://github.com/han1202012/NDK_Callback.git
--分析Log框架层JNI源码所需的Android底层文件 : CSDN - http://download.csdn.net/detail/han1202012/6905507
.
作者 :万境绝尘
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835
.
开发环境介绍 :
-- eclipse : adt-bundle-windows-x86-20130917
-- sdk : 版本 2.3.3
-- ndk : android-ndk-r9c-windows-x86.zip
-- cygwin : 所需组件 binutils , gcc , gcc-mingw , gdb , make;
-- javah : jdk6.0自带工具
-- javap : jdk6.0自带工具
JNI 总结 :
Java 调用 C 流程 :
-- a. 定义 Native 方法 : 在 shuliang.han.ndkparameterpassing.DataProvider.java 类中定义 Native 方法 public native int add(int x, int y);
-- b. 生成方法签名 : 进入 AndroidProject/bin/classes 目录, 使用 javah shuliang.han.ndkparameterpassing.DataProvider 命令, 便生成了头文件, 该头文件引用了 jni.h, 以及定义好了 对应的 Native 方法, 生成 JNIEXPORT jint JNICALL Java_shuliang_han_ndkparameterpassing_DataProvider_add (JNIEnv *, jobject, jint, jint);
-- c. 编写 Android.mk 文件 :
-- e. Java代码加载动态库 : 在 Java 代码中调用该类的类前面, 在类的一开始, 不在方法中, 加入 static{ System.loadLibrary("hello"); } ;