如何在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, 在该文件中找这个方法的实现即可。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯