android---JNI基本工作步骤

本文详细介绍了JNI的基本工作流程,包括在Java代码中声明native方法、使用javah命令生成头文件、创建Android.mk文件、实现未实现的方法、生成库文件等步骤。同时,文章还提供了JNI类型映射,包括Java类型与本地类型之间的转换函数,如GetBooleanArrayElements、GetByteArrayElements等,帮助开发者更高效地进行跨语言调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JNI 基本工作流程


1. 在java代码中声明一个native的方法.
2. 用javah命令生成 native方法对应的头文件.javah命令需要注意包名和class 所在的目录
3. 在工程中创建一个jni目录,把头文件 拷贝jni目录
4. 创建Android.mk文件.
5. 实现头文件里面未实现的方法.
6. 在工程目录下  使用ndk-build 命令生成库文件. 生成的这个库文件如果是静态库是一个.a的文件.
.a文件的文件需要拷贝到平台下E:\android-ndk-cpp\build\platforms\android-8\arch-arm\usr\lib
如果是动态库是一个.so的文件. 我们的adt 会通过aapt  把文件打包到apk里面 . 程序在android里面. so文件就在data/data/包名下/lib
注意: eclipse 会缓存文件,所以重新编译库文件的时候需要把工程给clean一下.
生成一个方法的签名需要调用 javap -s 这个命令

Java类型 本地类型 描述
boolean jboolean C/C++8位整型
byte jbyte C/C++带符号的8位整型
char jchar C/C++无符号的16位整型
short jshort C/C++带符号的16位整型
int jint C/C++带符号的32位整型
long jlong C/C++带符号的64位整型e
float jfloat C/C++32位浮点型
double jdouble C/C++64位浮点型
Object jobject 任何Java对象,或者没有对应java类型的对象
Class jclass Class对象
String jstring 字符串对象
Object[] jobjectArray 任何对象的数组
boolean[] jbooleanArray 布尔型数组
byte[] jbyteArray 比特型数组
char[] jcharArray 字符型数组
short[] jshortArray 短整型数组
int[] jintArray 整型数组
long[] jlongArray 长整型数组
float[] jfloatArray 浮点型数组
double[] jdoubleArray 双浮点型数组

※ JNI类型映射



函数 Java数组类型 本地类型
GetBooleanArrayElements jbooleanArray jboolean
GetByteArrayElements jbyteArray jbyte
GetCharArrayElements jcharArray jchar
GetShortArrayElements jshortArray jshort
GetIntArrayElements jintArray jint
GetLongArrayElements jlongArray jlong
GetFloatArrayElements jfloatArray jfloat
GetDoubleArrayElements jdoubleArray jdouble

JNI数组存取函数


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值