Android JNI之数据类型

Posted 行走的段子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android JNI之数据类型相关的知识,希望对你有一定的参考价值。

JNI中数据类型的意义在于桥接Java数据类型与C数据类型。

简单数据类型:

Java Type
Native Type
Description
boolean
jboolean
unsigned 8 bits
byte
jbyte
signed 8 bits
char
jchar
unsigned 16 bits
short
jshort
signed 16 bits
int
jint
signed 32 bits
long
jlong
signed 64 bits
float
jfloat
32 bits
double
jdouble
64 bits
void
void
N/A  

 

 

 

 

 

 

 

 

 

 

 

 

引用类型:

特征类型(Signatures):
看到Signatures是不是有点眼熟,在我的Android JNI之静态注册中一带而过的javah自动生成头文件,注意看javah不仅完成了方法名的转换,而且在方法注释中标注了该方法的Signature,下面说一下这个对应关系。

Type Signature
Java Type
Z
boolean
B
byte
C
char
S
short
I
int
J
long
F
float
D
double
L fully-qualified-class ;
fully-qualified-class
[ type
type[]
( arg-types ) ret-type
method type

 

 

 

 

 

 

 

 

 

 

 

 

 

举个例子,对于Java方法

long f (int n, String s, int[] arr);

其对应的特征值就是(ILjava/lang/String;[I)J 

PS:这个特征值在动态注册的时候很重要,这关系到你在Java类中声明的native方法能否正确找到对应的native方法

以上是关于Android JNI之数据类型的主要内容,如果未能解决你的问题,请参考以下文章

Android JNI之调用JAVA方法的返回值签名

Android自助餐之Jni进阶

Android jni 数据类型丢失精度(ByteBuffer,int)

Android的JNI调用

Android JNI 学习:JNI 数据类型和数据结构

ReactNative 4Android源码分析二: 《JNI智能指针之实现篇》