请教怎么能找到 Java 的 native 原生实现代码?

2022-08-24 17:31:10 +08:00
 nnegier
我在找 Android 的 Linux.java 的 remove(String path)的 native 原生实现代码。

我的做法,通过在 android9 整个源码目录中搜索 Java_libcore_io_Linux_remove ,但可惜没有找到,是我方法错了吗,我应该怎么找?
1513 次点击
所在节点    程序员
8 条回复
cheng6563
2022-08-24 17:34:45 +08:00
要找 ART 的部分吧
aichunya
2022-08-24 17:36:46 +08:00
那个要看 JVM 的源码了,可以去 https://openjdk.org/这里找
AoEiuV020CN
2022-08-24 18:13:21 +08:00
nnegier
2022-08-24 18:33:21 +08:00
@AoEiuV020CN 看来它们的连接方式不止 jni 一种?这是什么类型的连接?我下次按这个规则来搜一下
AoEiuV020CN
2022-08-24 18:43:11 +08:00
@nnegier 继续搜 remove 就看到了,用到了 JNINativeMethod RegisterNatives jniRegisterNativeMethods ,
所谓动态注册,
AoEiuV020CN
2022-08-24 18:59:04 +08:00
@nnegier 我是先找到这个 cpp 再定位方法的,
动态注册相当自由,没法通过固定结构搜到特定方法,
nnegier
2022-08-30 14:16:12 +08:00
@AoEiuV020CN 是的,用到的是动态注册。我想再请问一下我们自己写的普通应用能用动态注册吗,我在写 Demo 的过程中报了一个错,android_runtime/AndroidRuntime.h 头文件找不到,这个我不知道怎么引,我尝试过将 AndroidRuntime.h 源代码拷进项目,但这下报错的需要引入的东西就更多了?
AoEiuV020CN
2022-08-30 15:34:14 +08:00
@nnegier #7 普通 app 不能照搬安卓低层的代码,
要动态注册可以找个普通的教程参考一下, 搜“android jni 动态注册”,
直接使用 env->RegisterNatives ,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/875114

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX