---------------------------------------华丽的分割线-----------------------------------------
当你使用简单的本地方法时,有以下:
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”要一致,包括大小写
本文通过一个简单的例子介绍了如何在Android应用中使用JNI技术调用C/C++代码。具体展示了Android.mk文件配置、Java调用本地方法及C实现这些方法的过程。

被折叠的 条评论
为什么被折叠?



