通过adb shell dumpsys命令获取当前应用的component
2014-06-22 01:24
459 查看
在android测试中,经常需要知道启动一个Activity所需要的component,例如在monkeyrunner中启动一个系统设置:startActivity(component="com.android.settings/com.android.settings.Settings"),那如何获取该component 呢?
有如下方法:
1.在有root 权限并且开启了view server 的前提下,使用sdk/tools目录下hierarchyviewer.bat 工具可以获得
2.在sdk/build-tools目录下有个aapt工具,使用aapt dump badging *.apk可以获得
3.在CMD窗口中执行adb logcat -v time -s ActivityManager,然后点击应用进入,如点击系统设置,进入后会有相应的日志信息打印出来,在信息中查找 cmp=com.android.settings/.Settings
4.通过adb shell dumpsys命令获得,这也是我准备主要介绍的方法
在CMD窗口中执行adb shell dumpsys window -h,会显示下面的帮助内容:
C:\Users\xuxu>adb shell dumpsys window -h
Window manager dump options:
[-a] [-h] [cmd] ...
cmd may be one of:
l[astanr]: last ANR information
p[policy]: policy state
a[animator]: animator state
s[essions]: active sessions
d[isplays]: active display contents
t[okens]: token list
w[indows]: window list
cmd may also be a NAME to dump windows. NAME may
be a partial substring in a window name, a
Window hex object identifier, or
"all" for all windows, or
"visible" for the visible windows.
-a: include all available server state.
我们使用windows选项,执行adb shell dumpsys window w,在输出结果中我们可以找到打开的当前应用的component,而component中总是含有斜杠“/”,所以我们可以使用这个命令得到输出(进入系统设置应用),adb shell dumpsys window w | findstr \/ ,需要转义斜杠“/”,在linux下需要把findstr换成grep,此时输出的内容还是会比较多,不容易查找,再结果分析,发现可以再查找字符串“name=”,
接下来重新执行adb shell dumpsys window w | findstr \/ | findstr name= ,会输出下面的结果:
C:\Users\xuxu>adb shell dumpsys window w | findstr \/ | findstr name=
mSurface=Surface(name=com.android.settings/com.android.settings.Settings)
com.android.settings/com.android.settings.Settings 就是我们需要的component
接下来用python语句来获取该component:
打印结果:com.android.settings/com.android.settings.Settings
如此就可以在使用monkeyrunner中的startActivity方法时调用该方法将获取到的component传入参数了!
有如下方法:
1.在有root 权限并且开启了view server 的前提下,使用sdk/tools目录下hierarchyviewer.bat 工具可以获得
2.在sdk/build-tools目录下有个aapt工具,使用aapt dump badging *.apk可以获得
3.在CMD窗口中执行adb logcat -v time -s ActivityManager,然后点击应用进入,如点击系统设置,进入后会有相应的日志信息打印出来,在信息中查找 cmp=com.android.settings/.Settings
4.通过adb shell dumpsys命令获得,这也是我准备主要介绍的方法
在CMD窗口中执行adb shell dumpsys window -h,会显示下面的帮助内容:
C:\Users\xuxu>adb shell dumpsys window -h
Window manager dump options:
[-a] [-h] [cmd] ...
cmd may be one of:
l[astanr]: last ANR information
p[policy]: policy state
a[animator]: animator state
s[essions]: active sessions
d[isplays]: active display contents
t[okens]: token list
w[indows]: window list
cmd may also be a NAME to dump windows. NAME may
be a partial substring in a window name, a
Window hex object identifier, or
"all" for all windows, or
"visible" for the visible windows.
-a: include all available server state.
我们使用windows选项,执行adb shell dumpsys window w,在输出结果中我们可以找到打开的当前应用的component,而component中总是含有斜杠“/”,所以我们可以使用这个命令得到输出(进入系统设置应用),adb shell dumpsys window w | findstr \/ ,需要转义斜杠“/”,在linux下需要把findstr换成grep,此时输出的内容还是会比较多,不容易查找,再结果分析,发现可以再查找字符串“name=”,
接下来重新执行adb shell dumpsys window w | findstr \/ | findstr name= ,会输出下面的结果:
C:\Users\xuxu>adb shell dumpsys window w | findstr \/ | findstr name=
mSurface=Surface(name=com.android.settings/com.android.settings.Settings)
com.android.settings/com.android.settings.Settings 就是我们需要的component
接下来用python语句来获取该component:
import os import re def getFocusedPackageAndActivity(): pattern = re.compile(r"[a-zA-Z0-9\.]+/[a-zA-Z0-9\.]+") out = os.popen("adb shell dumpsys window windows | findstr \/ | findstr name=").read() list = pattern.findall(out) component = list[0] return component print getFocusedPackageAndActivity()
打印结果:com.android.settings/com.android.settings.Settings
如此就可以在使用monkeyrunner中的startActivity方法时调用该方法将获取到的component传入参数了!
相关文章推荐
- 通过 adb shell dumpsys 命令获取当前应用的 component
- 通过 adb dumpsys 命令 获取手机信息
- 通过adb shell命令查看当前与用户交互的activity
- adb的adb shell pm list packages命令用来查看当前设备app应用包
- Android通过adb命令来获取手机当前页面的名称
- 通过ADB命令获取当前activity
- 通过ADB命令获取当前activity
- 通过shell命令查看当前运行应用
- adb shell dumpsys 命令——打印当前系统信息
- 通过adb shell命令来获取data的权限,输入su的命令出错
- adb的adb shell pm list packages命令用来查看当前设备app应用包
- 如何通过adb命令获取手机型号与设备信息
- Android adb shell dumpsys的一些命令
- adb shell dumpsys 命令
- adb shell pm命令初识, 禁止应用开机自启动命令
- adb shell 获取当前时间戳
- 在windows下使用cmd命令通过adb shell自动调用android模拟或真机的InstrumentRunner进行android 自动化测试
- adb shell dumpsys 命令
- adb shell dumpsys 命令 查看内存
- adb shell中命令(monkey、input等)的实质---通过脚本启动jar