如何在一个界面中快速得到每个控件的Resource ID

在Android开发中时常会碰到需要定位到某个控件的资源ID的需求。比如有些bug中,某个控件显示的信息不对;某个控件显示的位置不对等等。 我们在看到一个界面时,需要找到这个控件的资源ID后再分析相关的代码。
 
之前有种方法就是按照字符串去搜索这个资源ID名,比如通话界 面中的"通话录音","添加通话","静音"等字符串,我们就可以通过这种方式来找到它们对应的资源ID。但是比如我拨打一个10086, 那"10086"这个字段就无法按照这种方式来搜索到了,因为这个是动态的信息,非固定字符串信息。
 
今天使用adb命令找到一个快速的方法,可以手机连接PC后通过adb shell uiautomator dump命令,将当前的界面信息保存到xml文件中。具体命令如下:
 
adb shell uiautomator dump /storage/emulated/0/Download/ui.xml

 

说明:这个命令中的/storage/emulated/0/Download/目录是手机中的目录,你可以选择其他的目录文件,ui.xml是我保存的xml文件,可以随便命名。
 
之后,手机生成ui.xml后,我们就可以将这个文件push到手机中了。命令如下:
 
adb pull /storage/emulated/0/Download/ui.xml

 

下面是我接的InCall界面的ui.xml文件,可以使用浏览器打开这个文件,搜索“10086”,我们就可以看到10086这个信息对应的资源ID(contactgrid_contact_name)和坐标等信息都会的到了。
 
10086" resource-id="com.android.dialer:id/ contactgrid_contact_name" class="android.widget.TextView" package="com.android.dialer" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds=" [260,329][460,426]"/>

你可能感兴趣的:(android)