![](https://img-blog.csdnimg.cn/direct/3d1ed5290f0c44efb73e9f3a6b0a2367.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JNI
文章平均质量分 86
JNI01-常用方法
JNI02-Dalvik下动态注册原理
JNI03-Art下动态注册流程
二手的程序员
这个作者很懒,什么都没留下…
展开
-
JNI03-Art下动态注册流程
与dalvik相比,art的流程只是层次更深了一点,核心的逻辑还是一样的。还有一个区别就是几乎每个版本的代码都会有点小变化。原创 2023-11-30 10:44:13 · 802 阅读 · 0 评论 -
JNI02-Dalvik下动态注册原理
如果 12 的位置不是0,那么 eax 的值是 esi的值,而 esi 的值是 argv[0] 的值,这个值就是 this,所以这就很好的解释了为啥静态方法与实例方法在JNI中的参数是不一样的。首先,要根据描述符来找方法,先找类的直接方法,没找到的话,再找类的虚方法,这个过程就很像我们之前实现 invoke 指令的过程。有一点疑惑,eax 是方法的第一个参数,但是第一个参数应该是 JNIEnv 才对,可能是汇编代码后面又搞了啥操作,比如 copy 参数之类的,算了,懒得跟了,反正,大致的逻辑就是这样了。原创 2023-11-30 10:42:01 · 1002 阅读 · 0 评论 -
JNI01-常用方法
函数获取指向数组元素的直接指针,这个函数的最后一个参数是isCopy,让调用者确定返回的c指针是指向数组副本,还是指向原始数组。它们可以为局部引用创建一个指定数量内嵌的空间,在这个函数对之间的局部引用都会在这个空间内,直到释放后,所有的局部引用都会被释放掉,不用再担心每一个局部引用的释放问题了。引用确保可以创建了足够的局部引用数量,所以在循环处理局部引用时可以不进行删除了,但是显然会消耗更多的内存空间了。但是,如果要与 JVM 的中对象进行复杂的交互计算,就需要创建更多的局部引用了,这时就需要使用。原创 2023-11-30 10:39:07 · 863 阅读 · 0 评论