Liping Zou bio photo

Liping Zou

An Android Developer

Email Twitter Instagram Github Stackoverflow

Overview

###添加Native Support

创建Android工程,Add Native Support。

addSupport

###声明native方法

在Java文件中,声明native方法,这个方法没有方法体。形如,public native int getSumFromJNI(int x, int y);

###Android.mk

在Android.mk中,告诉编译期源文件的位置等信息,并添加所需的类库。以下是最简单的Android.mk。

1
2
3
4
5
6
7
8
9
		
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

###实现native方法

在project/jni目录下的C文件中,添加头文件和代码。对于方法的命名是Java_包名_方法名

1
2
3
4
5
6
#include <jni.h>
		
jint Java_com_example_hellojni_HelloJni_getSumFromJNI( JNIEnv* env, jobject thiz, int x, int y)
{
	return x + y;
}

###加载动态库

在Java文件中,加载动态库。

1
2
3
static {
        System.loadLibrary("hello-jni");
    	}

###编译运行 进入project目录,执行ndk-build

编译完成后,会在libs目录下生成libhello-jni.so。

ndk-build