什么是JNI,这个在官方文档和百度百科里有,我在这就不多说了。下次翻译文档在发表。这里只是写了个Demo。希望等帮到大家。
这个Demo可不是传统的HelloWorld,JNI完成两数相乘的运算,而Java只是负责传入参数,和展示。
效果图:
http://download.csdn.net/detail/hello_12413/8108377
JNIHelper.java
package com.example.jnidemo;
public class JNIHelper {
static {
System.loadLibrary("jniDemo"); //加载jniDemo.o 库
}
public static native int multiplication(int num1, int num2); //外部方法
}
Android.mk 文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := jniDemo //.o库文件名
LOCAL_SRC_FILES := demo.cpp demo.h //编译的文件
include $(BUILD_SHARED_LIBRARY)
demo.h
#include <jni.h>
#define mul(X,Y) X*Y
extern "C" {
jint Java_com_example_jnidemo_JNIHelper_multiplication(JNIEnv *, jobject, jint,
jint);//方法名Java_包名_类名_方法名 <span style="font-family: Arial, Helvetica, sans-serif;">“Java”的"J"要大写</span>
}
demo.cpp
#include "demo.h"
jint Java_com_example_jnidemo_JNIHelper_multiplication(JNIEnv * env, jobject joct, jint num1,
jint num2){
return mul(num1,num2);
}