吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3059|回复: 22
收起左侧

[Android 原创] 通过JNI访问Java数组

  [复制链接]
QingYi. 发表于 2021-12-15 18:59
首先我们在Java里面创建一个数组
1.png

如果我们正常在Java想调用这个方法,那么代码是这样的
[Java] 纯文本查看 复制代码
Test t1 = new Test();
int []arr = t1.getArr();


那么在native里面我们首先要找到test这个方法,然后实例化一个对象,然后再调用getArr这个方法

先把test搞出来先
2.png

后面我们就要调用对象的方法
3.png

按照常理返回的是一个arr数组,我们来接一下.
4.png

然后它报错,我们强制转换一下.
[Asm] 纯文本查看 复制代码
 jintArray myArr = static_cast<jintArray>(env->CallObjectMethod(testObj,getArrId));


我们现在要得到它里面的元素进行访问,所以调用GetIntArrayElements这个方法,返回值是jint类型的地址
5.png


第第二个值我们填null,在ndk里面就是nullptr
[Asm] 纯文本查看 复制代码
jint *arrays = env->GetIntArrayElements(myArr, nullptr);


代码书写完成.
6.png

运行一下,结果也是正确的得到了.
7.png

如果是以参数传进来的就更简单了
8.png

结果也是正确的
9.png

免费评分

参与人数 9吾爱币 +16 热心值 +9 收起 理由
qtfreet00 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Slimu + 1 + 1 热心回复!
白云点缀的蓝 + 2 + 1 谢谢@Thanks!
darklure + 1 + 1 热心回复!
jawy + 1 + 1 热心回复!
为之奈何? + 1 + 1 我很赞同!
debug_cat + 2 + 1 用心讨论,共获提升!
笙若 + 1 + 1 谢谢@Thanks!
JinxBoy + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| QingYi. 发表于 2021-12-16 08:52
莫问刀 发表于 2021-12-15 23:41
如果方法的入参是java的自定义类型,不是常用类型这个怎么做呢,还有就是,大佬最终的教程是想带我们干什么 ...

就是object啊,Java里面万物皆object.
这能做啥功能,这周就完结ndk的学习了.
学新的去
debug_cat 发表于 2021-12-17 11:58
QingYi. 发表于 2021-12-16 08:52
就是object啊,Java里面万物皆object.
这能做啥功能,这周就完结ndk的学习了.
学新的去

啊这,我以为要做什么牛逼黑科技
season123 发表于 2021-12-15 19:23
Aa1140141768 发表于 2021-12-15 20:52
学习啦啊.,.
赵晓帅i 发表于 2021-12-15 22:32

学习啦啊.,.
debug_cat 发表于 2021-12-15 23:41
如果方法的入参是java的自定义类型,不是常用类型这个怎么做呢,还有就是,大佬最终的教程是想带我们干什么牛逼哄哄的功能呢
JerryLia 发表于 2021-12-16 07:36
感谢分享,下载看看!
jhmarryme 发表于 2021-12-16 08:56
学习了。。
Dream_Peng 发表于 2021-12-16 09:27
大佬搞得好高级的哦
小不点G 发表于 2021-12-16 10:09
study . exe
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 16:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表