android ndk jni 数组操作

2025-06-09 10:28:03

在androidndk,jni开发的过程中我们经常会遇到数组问题,C语言支持指针操作,但是java并不支持指针操作,那么素匝芒专遇到数组问题该如何处理,C语言如何将数组传递到java,让java调用,java如何将数组传递到C语言,让C语言使用呢?方便他人亦是方便自己,如果觉得还行就点下右边的投票吧,这样可以帮助其他人更快的找到解决问题的方法;有疑问的也可留言哦, 谢谢!

工具/原料

Windows 8.1 x64

jdk1.8.0_20

adt-bundle-windows-x86_64-20140702

android-ndk-r10c

生成函数

1、jni提供的主要的数组类型有,如下类型:

android ndk jni 数组操作

2、创建一个jniArray工程,并在MainActivity中添加如下 native方法,如下图所示:

android ndk jni 数组操作

3、配置java的参数

android ndk jni 数组操作

4、通过javah生成对应的C语言层.h文件:

android ndk jni 数组操作

用法实例

1、有所的例子都是通过1、java层传入一个数组;2、C拳婊招稹语言层创建一个同样大小的数组;3、将java层数组的类容,复制到C语言层数组中;

2、object[]与 jobjectArray的例子如下图所示:

android ndk jni 数组操作

3、boolean[]与 jbooleanArray的例子如下图所示:

android ndk jni 数组操作

4、当然也可以通过GetBooleanArrayRegion函数来获取数组对应内存数据的副本,然后通过S髫潋啜缅etBooleanArrayRegion函数将修改后的数据设置进去;从而达到修改数据的内存数据的目的;

5、byte,char, short,int, long,float,double的用法跟boolean的用法一致

6、但是需要注意的是,java和C语言虽然有些类型的名字一致,但是他们的实际情况差歆懈邦嘭距很大,如下图所示:jbyte对应的是signed char;jchar对应的是 unsigned short;jlong对应的是 long long;

android ndk jni 数组操作

7、 方便他人亦是方便自己,如果觉得还行就点下下边的投票吧,这样可以帮助其他人更快的找到解决问题的方法;有疑问的也可留言哦, 谢谢!

android ndk jni 数组操作
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢