????????setTitle("The Native Add Result is "+String.valueOf(test.nadd(10, 20)));
28
??
29
????}?
30
??
31
}
32
??
33
Nadd.java
34
??
35
packagecom.hello.jnitest;
36
??
37
???
38
??
39
publicclassNadd {
40
??
41
static{
42
??
43
System.loadLibrary("hello_jni");
44
??
45
}
46
??
47
???
48
??
49
publicnativeintnadd(inta, intb);
50
??
51
}
Java代碼說明: 1)jnitest.java是一個activity的類對象,在該類對象中生成調(diào)用JNI函數(shù)的類對象,同時調(diào)用JNI方法,最后將JNI方法的結(jié)果顯示到標題欄上; 2)Nadd.java是一個引用和聲明JNI庫和函數(shù)的類,其中System.loadLibrary();函數(shù)用來引用JNI庫,默認JNI庫放在 android系統(tǒng)的/system/lib/目錄下;public nadd int nadd(int a, int b);為聲明需要在java程序中使用的JNI庫中的函數(shù); JNI中java部分的代碼到此就結(jié)束了,總結(jié)一下在java代碼中需要做兩件事: 1)使用System.loadLibrary()函數(shù)來引用JNI庫; 2)聲明調(diào)用JNI庫的函數(shù)且前面添加native關(guān)鍵字; android C/C++部分代碼:
01
#define LOG_TAG "hello-JNI"
02
#include <stdio.h>
03
#include <stdlib.h>
04
#include <unistd.h>
05
#include <sys/types.h>
06
#include <sys/stat.h>
07
#include <fcntl.h>
08
#include <assert.h>
09
#include "jni.h"
10
#include "JNIHelp.h"
11
#include "android_runtime/AndroidRuntime.h"
12
staticjint com_hello_jnitest_jnitest_nadd(JNIEnv *env, jobject obj, jint a, jint b)