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、在工程下创建jni包,里面创建.c文件,eg:hello.c:
#include<jni.h> //env代表Java环境,通过这个环境了以调用Java方法 //谁调用了helloFromJNI(),obj就代表谁 jstring Java_cn_uc_NdkActivity_helloFromJNI(JNIEnv* env,jobject thiz){ return (*env)->NewStringUTF(env,"hello from C"); }
3、在jni包里创建Android.mk文件(copy):
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello//要新建的文件名 LOCAL_SRC_FILES := hello.c//源文件名 include $(BUILD_SHARED_LIBRARY)
4、在Cygwin里进入jni目录执行ndk-build命令
进入jni目录: cd /cygdrive/d/Android/ProTest/NdkTestActivity/jni/
5、------------------------------------------可以开始测试--------------------
6、在Activity里实现Button的点击事件
public void myButton(View view){ String s = helloFromJNI();//前面声明的native方法 Toast.makeText(this, s, 1).show(); }
7、运行该Android工程,如果正常toast则成功