1、第一步:在Activity里面生命一个native方法:
public class NdkActivity extends Activity {
//在静态代码块中加载C语言的库文件
/** 声明一个native方法 */
public native String helloFromJNI();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
2、在工程的class目录下调用javah的命令对<包名.类名>进行编译,生成.h文件
3、在工程下创建jni包,将.h文件引入该包,在该包里面创建.c文件,eg:hello.c:
#include<jni.h>
//env代表Java环境,通过这个环境了以调用Java方法
//谁调用了helloFromJNI(),obj就代表谁,XXX代表生成的.h文件中的类型
jstring <XXX>(JNIEnv* env,jobject thiz){
return (*env)->NewStringUTF(env,"hello from C");
}
4、在jni包里创建Android.mk文件(copy):
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello//要新建的文件名
LOCAL_SRC_FILES := hello.c//源文件名
include $(BUILD_SHARED_LIBRARY)
5、在Cygwin里进入jni目录执行ndk-build命令
进入jni目录: cd /cygdrive/d/Android/ProTest/NdkTestActivity/jni/
6、------------------------------------------可以开始测试--------------------
7、在Activity里实现Button的点击事件
public void myButton(View view){
String s = helloFromJNI();//前面声明的native方法
Toast.makeText(this, s, 1).show();
}
8、运行该Android工程,如果正常toast则成功