---------------------------------------华丽的分割线-----------------------------------------
当你使用简单的本地方法时,有以下:
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog
LOCAL_MODULE := testSum
LOCAL_SRC_FILES := testSum.c
include $(BUILD_SHARED_LIBRARY)
(JAVA)TestJni.java:
package com.test;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class TestJni extends Activity {
private static final String TAG = "TestJni:";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.v(TAG, "" + getSum(2, 3));
}
public native int getSum(int x, int y);
static{
System.loadLibrary("testSum");
}
}
(JNI)testSum.c:
#include <string.h> #include <android/log.h> #include <jni.h> jint Java_com_test_TestJni_getSum(JNIEnv* env, jobject thiz, jint x,jint y) { //该方法为打印的方法 __android_log_print(ANDROID_LOG_INFO, "JNIMsg", "Get Param: x=%d y=%d ", x,y); return x + y; }
注意点:
- "Java_com_test_TestJni_getSum"中“com_test_TestJni”一定要与实际包名一致,包括大小写
- "Java_com_test_TestJni_getSum"中“getSum”一定要与java类中的方法名一致,包括大小写
- “LOCAL_MODULE := testSum”和“System.loadLibrary("testSum");”中的库名“testSum”要一致,包括大小写