• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nnegier
V2EX  ›  程序员

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

  •  1
     
  •   nnegier · Aug 24, 2022 · 1890 views
    This topic created in 1356 days ago, the information mentioned may be changed or developed.
    我在找 Android 的 Linux.java 的 remove(String path)的 native 原生实现代码。

    我的做法,通过在 android9 整个源码目录中搜索 Java_libcore_io_Linux_remove ,但可惜没有找到,是我方法错了吗,我应该怎么找?
    8 replies    2022-08-30 15:34:14 +08:00
    cheng6563
        1
    cheng6563  
       Aug 24, 2022
    要找 ART 的部分吧
    aichunya
        2
    aichunya  
       Aug 24, 2022
    那个要看 JVM 的源码了,可以去 https://openjdk.org/这里找
    nnegier
        4
    nnegier  
    OP
       Aug 24, 2022 via Android
    @AoEiuV020CN 看来它们的连接方式不止 jni 一种?这是什么类型的连接?我下次按这个规则来搜一下
    AoEiuV020CN
        5
    AoEiuV020CN  
       Aug 24, 2022 via Android
    @nnegier 继续搜 remove 就看到了,用到了 JNINativeMethod RegisterNatives jniRegisterNativeMethods ,
    所谓动态注册,
    AoEiuV020CN
        6
    AoEiuV020CN  
       Aug 24, 2022 via Android
    @nnegier 我是先找到这个 cpp 再定位方法的,
    动态注册相当自由,没法通过固定结构搜到特定方法,
    nnegier
        7
    nnegier  
    OP
       Aug 30, 2022
    @AoEiuV020CN 是的,用到的是动态注册。我想再请问一下我们自己写的普通应用能用动态注册吗,我在写 Demo 的过程中报了一个错,android_runtime/AndroidRuntime.h 头文件找不到,这个我不知道怎么引,我尝试过将 AndroidRuntime.h 源代码拷进项目,但这下报错的需要引入的东西就更多了?
    AoEiuV020CN
        8
    AoEiuV020CN  
       Aug 30, 2022
    @nnegier #7 普通 app 不能照搬安卓低层的代码,
    要动态注册可以找个普通的教程参考一下, 搜“android jni 动态注册”,
    直接使用 env->RegisterNatives ,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5643 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 08:36 · PVG 16:36 · LAX 01:36 · JFK 04:36
    ♥ Do have faith in what you're doing.