android ndk jni 数组操作

 时间:2024-10-23 03:54:44

在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函数来获取数组对应内存数据的副本,然后通过SetBooleanArrayRegion函数将修改后的数据设置进去;从而达到修改数据的内存数据的目的;

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 数组操作
  • Android C++ NDK如何使用数组传递数据?
  • android studio快速入门之NDK之JNI简单快速入门
  • JNI中Java与C++交互
  • AndroidNDK初步之如何调用jni及.so和mk的配置
  • Android 如何处理JNI异常的捕获和抛出?
  • 热门搜索
    我爱祖国手抄报资料 关于法制的手抄报资料 爱牙护齿手抄报 电子版手抄报怎么做 绿色植物手抄报 青春手抄报内容 禁止吸烟手抄报内容 放飞科技梦想手抄报 文明乘车手抄报 物理手抄报内容