永发信息网

如何在Android源码里查找Java中native方法对应的C++实现

答案:2  悬赏:0  手机版
解决时间 2021-01-01 19:17
  • 提问者网友:山高云阔
  • 2021-01-01 14:59
如何在Android源码里查找Java中native方法对应的C++实现
最佳答案
  • 五星知识达人网友:duile
  • 2021-01-01 15:20
知道方法名就知道C++里的函数名了,native方法的函数名是 Java_包名_类名_函数名 开头的,包名要把.换成_。比如com.xxx.yyy.ClassA.methodB在C++那边找Java_com_xxx_yyy_ClassA_methodB就行了
全部回答
  • 1楼网友:零点过十分
  • 2021-01-01 15:59
在android源码里,有许多方法都是使用jni机制调用底层的c++实现,比如大家都很熟悉的binder.java里,就有   public static final native int getcallingpid();   public static final native int getcallinguid();   public static final native long clearcallingidentity();   等方法都是直接调用c++里的实现。   通过下面命令可以很快找到对应的实现,   . build/envsetup   cgrep ./frameworks '"getcallingpid"'   这时会查找到如下结果:   ./frameworks/base/core/jni/android_util_binder.cpp:745: { "getcallingpid", "()i", (void*)android_os_binder_getcallingpid },   这样就可以知道对应的c++实现方法名字为android_os_binder_getcallingpid, 在该文件中找这个方法的实现即可。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯