android找到当前显示界面java类

平时在进行整机开发的过程中,遇到不熟悉的模块或三方应用,可以通过如下方法找到当前界面显示java文件

1.通过monitor工具

工具在android sdk里面,目录如下:

sdk/tools/monitor

启动后界面如下
在这里插入图片描述

a)查看应用包名和UI界面,找到界面相关的View id或string id
在这里插入图片描述

b)然后通过grep命令,在源代码里面找到对文件应的布局文件

//以字符串为例,因为布局文件id很多地方都是共用的,很难找到是具体哪个地方在用
chadm@chadm-HP-ZHAN-66-Pro-G1:~/project/android/android10/packages/apps/Settings$ grep -rn '允许手机在接触' --include=*.xml res/
res/values-zh-rCN/strings.xml:849:    <string name="nfc_quick_toggle_summary" product="default" msgid="5961264333260120898">"允许手机在接触其他设备时交换数据"</string>

chadm@chadm-HP-ZHAN-66-Pro-G1:~/project/android/android10/packages/apps/Settings$ grep -rn 'nfc_quick_toggle_summary' --include=*.xml res/xml/
res/xml/connected_devices_advanced.xml:35:        android:summary="@string/nfc_quick_toggle_summary"

小技艺:

尽量找比较特殊的字符或ID,能缩小范围,提高效率

c)找到使用布局文件的java代码,离找到对应代码逻辑就很接近了

chadm@chadm-HP-ZHAN-66-Pro-G1:~/project/android/android10/packages/apps/Settings$ grep -rn 'connected_devices_advanced' --include=*.java ./
./src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java:64:        return R.xml.connected_devices_advanced;
./src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java:98:                    sir.xmlResId = R.xml.connected_devices_advanced;

找到最终目标文件 :

AdvancedConnectedDeviceDashboardFragment

2.通过adb命令

找到当前界面,以通话为例

chadm@chadm-HP-ZHAN-66-Pro-G1:~/project/android/android10/packages/apps/Settings$ adb shell dumpsys activity | grep mResumed
    mResumedActivity: ActivityRecord{519ab3b u0 com.android.dialer/.main.impl.MainActivity t66}

找到界面后,直接找到了对应的java文件

MainActivity

3.通过log查看启动类

使用 adb logcat 命令,可以看到启动一个应用的时候有如下打印:

08-22 19:30:25.743  1350  1450 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.dialer/.main.impl.MainActivity bnds=[637,1133][839,1345] (has extras)} from uid 10103

对应的是ActivityStarter里面的startActivity方法,同时还能看到caller uid,即是哪个应用启动的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值