编译
- 编译
编译:xxx.c ------> windows .obj 语法 Linux .o
链接:.o -----> log.so - 编译规则
Eclipse GUN ----> Android.mk
Android Studio: LLVM ----> CMakeList.txt
JNI
1、基本数据类型
Signature | Java | Native |
---|---|---|
B | byte | jbyte |
C | char | jchar |
D | double | jdouble |
F | float | jfloat |
I | int | jint |
S | short | jshort |
J | long | jlong |
Z | boolean | jboolean |
V | void | void |
2、数组数据类型
数组简称则是在前面添加"[
" :
Signature格式 | Java | Native |
---|---|---|
[B | byte[] | jbyteArray |
[C | char[] | jcharArray |
[D | double[] | jdoubleArray |
[F | float[] | jfloatArray |
[I | int[] | jintArray |
[S | short[] | jshortArray |
[ J | long[] | jlongArray |
[ Z | boolean[] | jbooleanArray |
3、复杂数据类型
对象类型简称:L+ classname+;
Signature格式 | Java | Native |
---|---|---|
Ljava/lang/String | String | jstring |
L+class+ ; | 所有对象 | jobject |
[ L + classname + ; | Object[] | jobjectArray |
Ljava.lang.Class | Class | jclass |
Ljava.lang.Throwable | Throwable | jthrowable |
4、Signature
有了前面的讲解,我们通过案例来说说函数签名:(入参) 返回值参数
,这里用到的便是前面介绍的Signature格式:
Java格式 | 对应的签名 |
---|---|
void foo() | ()V |
float foo(int i) | (I)F |
long foo(int[] i) | ([I)J |
double foo (Class c) | (Ljava/lang/Class;)D |
boolean foo (int [] i,String s) | ([ILjava/lang/String;)Z |
String foo(int i) | (I)Ljava/lang/String; |