通过adb shell dumpsys命令获取当前应用的component

分类: adb2014-06-22 01:24 837人阅读 评论(0) 收藏 举报

androidadb测试monkeyrunnerpython

在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:

[python] view plaincopy

  1. import os
  2. import re
  3. def getFocusedPackageAndActivity():
  4. pattern = re.compile(r"[a-zA-Z0-9\.]+/[a-zA-Z0-9\.]+")
  5. out = os.popen("adb shell dumpsys window windows | findstr \/ | findstr name=").read()
  6. list = pattern.findall(out)
  7. component = list[0]
  8. 10.
  9. 11.         return component

12. print getFocusedPackageAndActivity()

打印结果:com.android.settings/com.android.settings.Settings

如此就可以在使用monkeyrunner中的startActivity方法时调用该方法将获取到的component传入参数了!

附出处:http://blog.csdn.net/gb112211/article/details/33073191

时间: 2024-10-13 22:17:17

通过adb shell dumpsys命令获取当前应用的component的相关文章

adb shell dumpsys 命令

Android开发中,常常可以用adb shell dumpsys这条命令来dump出系统运行时的状态信息,例如可以这样来察看某个应用的内存使用信息 adb shell dumpsys meminfo com.google.android.apps.maps 察看TaskStack adb shell dumpsys activity activities 察看Alarm列表 adb shell dumpsys alarm 在CMD下面输入以下命令: adb shell dumpsys acti

adb shell dumpsys 命令 查看内存

http://blog.csdn.net/xyz_lmn/article/details/7001892 android程序内存被分为2部分:native和dalvik,dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的,而bitmap是直接在native上分配的,对于内存的限制是 native+dalvik 不能超过最大限制.android程序内存一般限制在16M,当然也有24M的. 用以下命令可以查看程序的内存使用情况: adb shell dumpsys meminfo

adb & adb shell 相关命令

在Mac上配置adb命令 在Mac OS中使用adb命令时,应进行变量配置,步骤如下: 一.终端中输入 cd ~ 二.输入touch .bash_profile 回车 touch:如果没有,则创建文件,如果有,更新一下文件时间 三.输入open -e .bash_profile open:打开文件 回车后会在TextEdit中打开这个文件(如果未配置过环境变量,应该是个空白文件).在文件中加如以下内容 export PATH=${PATH}:/Users/admin/Applications/a

adb shell常用命令总结

一.文件操作相关命令 1.文件操作命令 子命令 参数 说明 cd 无 进入目录 cat [-beflnstuv] [-B bsize] [file...] 查看文件内容-n:显示行号-b:显示行号,但会忽略空行-s:显示行号,连续空行标记为一行 df 无 列出分区列表 du [-H] [-L] [-P] [-a] [-d depth] [-s] [-cghikmnrx] [file...] 查询文件或目录的磁盘使用空间 ls [-a] [-i] [-l] [-n] [-s] 列出目录内容-a:列

ANT编译打包&WIFI调试& adb shell常用命令

ANT编译打包 1:用ADT工具自带的打包:    1:切换到项目目录: 运行,android update project -p . android update project -p ./ --library ../com.example.plugin1.ifs 2:刷新:多了两个目录, 3:local.properties配置: sdk.dir=E:\\samy\\adt-huixin_x86-20140321\\sdk  key.store=./keystore/**** key.sto

使用adb shell dumpsys检测Android的Activity任务栈

谈起Android程序开发,就需要了解其四个主要的部件:Activity.Service.ContentProvider. BroadcastReceiver.而其中Activity是唯一直接控制程序界面呈现,直面用户操作的部件(当然BrowadCastReceiver也能通过桌面控件(App Widgets)来呈现有限的操作界面).Android对于Activity有严格的生命周期控制,以限制开发者在适当的回调函数里的放上合适的代码.对于多个Activity的转换,Android也有非常好的管

Android M App休眠 (adb shell dumpsys usagestats)

App休眠 在 Marshmallow 系统,Google 宣布了一个新的功能叫 App 休眠.App 休眠会阻止那些不 常用的 App(几天没有用过的 App)连接网络或者是运行任何程序直至设备充电.对于用户而言,这就意味着不经常使用的 App 不会消耗电量,从而延长电池的续航时间.用 adb shell dumpsys usagestats  命令可以查看 App 的进程和它们最后活跃的时间,列出 App 最后一天 / 星期 / 月 / 年的使用情况.在设置的开发者选项中有一项新的"未启用A

adb shell常用命令

adb shell常用命令: 按下OK键   device.press('KEYCODE_DPAD_CENTER','DOWN_AND_UP') 长按某个按键:  device.drag((236,440),(236,440),2,10) 相应的按键对应的名称如下: home键:KEYCODE_HOME back键:KEYCODE_BACK send键:KEYCODE_CALL End键:   KEYCODE_ENDCALL 上导航键:KEYCODE_DPAD_UP 下导航键:KEYCODE_D

adb shell dumpsys

adb shell dumpsys activity activities -- class/packagename adb shell dumpsys batterystate --reset   dumpsys wifi  cupinfo input_method memoryinfo "packagename" adb shell dumpsys batterystate > com.sepp.mypkgname > myapp_bts.txtphython hist