http://www.51cto.com/specbook/17/1351.htm // 很好的入门教程

======================JNI类===========================================

public class MainActivity extends Activity {

  private TextView tv;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv = (TextView) findViewById(R.id.test);
    tv.setText(sayHi() + "---hell jni");
 

    tv.setText(sayHi() + "---hell jni "
    + classLoader.getClass().getSimpleName());
    String[] ss = ss();
    for (int i = 0; i < ss.length; i++) {
      Log.e("JULY", "==" + ss[i]);
    }
  }

  /**返回int*/

  public native int sayHi();

  /**返回String字符串*/

  public native String[] ss();

  static {
    System.loadLibrary("test"); // 加载的so的名字
  }

}

================================Android.mk=================================

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := test // 这个就是编译产生的so文件,与上面的一一对应
LOCAL_SRC_FILES := test.cpp

include $(BUILD_SHARED_LIBRARY)

=================================test.cpp===================================

#include <jni.h>
#include <string.h>
extern "C" {
    jint Java_com_jnitest_MainActivity_sayHi(JNIEnv *env, jobject thiz) {
  return 100;
   }

   // Java.包名.类名(有native方法的类).该类的方法名 .替换成_  比如 Java.com.jnitest.MainActivity.ss

                            // 替换后 Java_com_jnitest_MainActivity_ss          (MainActivity.ss 函数对应)

                            // (JNIEnv *env, jobject thiz) 这两个参数是规定不能少的,为什么,我也解释不了,记住即可
 jobjectArray Java_com_jnitest_MainActivity_ss(JNIEnv *env, jobject thiz) {
       //android/content/ContextWrapper
      jclass cl = env->FindClass("java/lang/String");  
      jobjectArray s = env->NewObjectArray(5,cl,NULL);
  env->SetObjectArrayElement(s,0,env->NewStringUTF("1"));
  env->SetObjectArrayElement(s,1,env->NewStringUTF("2"));
  env->SetObjectArrayElement(s,2,env->NewStringUTF("3"));
  env->SetObjectArrayElement(s,3,env->NewStringUTF("4"));
  env->SetObjectArrayElement(s,4,env->NewStringUTF("5"));
  return s;
 }
}

posted on 2016-01-07 20:24  julyeah  阅读(167)  评论(0编辑  收藏  举报