0x01 查看dumpsys支持哪些服务: adb shell dumpsys -l

列出dumpsys支持的服务名字,例如(仅列出几个,全部服务有100多个)

$ adb shell dumpsys -l

Currently running services:

accessibility

account

activity

alarm

cpuinfo

isms

location

meminfo

mount

nfc

notification

package

permission

phone

power

window

0x02 查看dump某个具体服务的用法:adb shell dumpsys -h

这个就是adb shell dumpsys -l打印出来的名字,是必须遵守大小写的。

例如, adb shell dumpsys package -h

Android4.4.2中的dumpsys package -h

$ adb shell dumpsys package -h

Package manager dump options:

[-h] [-f] [cmd] ...

-f: print details of intent filters

-h: print this help

cmd may be one of:

l[ibraries]: list known shared libraries

f[ibraries]: list device features

r[esolvers]: dump intent resolvers

perm[issions]: dump permissions

pref[erred]: print preferred package settings

preferred-xml [--full]: print preferred package settings as xml

prov[iders]: dump content providers

p[ackages]: dump installed packages

s[hared-users]: dump shared user IDs

m[essages]: print collected runtime messages

v[erifiers]: print package verifier info

: info about given package

k[eysets]: print known keysets

Android6.0.1中的dumpsys package -h

$ adb shell dumpsys package -h

Package manager dump options:

[-h] [-f] [--checkin] [cmd] ...

--checkin: dump for a checkin

-f: print details of intent filters

-h: print this help

cmd may be one of:

l[ibraries]: list known shared libraries

f[ibraries]: list device features

k[eysets]: print known keysets

r[esolvers]: dump intent resolvers

perm[issions]: dump permissions

permission [name ...]: dump declaration and use of given permission

pref[erred]: print preferred package settings

preferred-xml [--full]: print preferred package settings as xml

prov[iders]: dump content providers

p[ackages]: dump installed packages

s[hared-users]: dump shared user IDs

m[essages]: print collected runtime messages

v[erifiers]: print package verifier info

d[omain-preferred-apps]: print domains preferred apps

i[ntent-filter-verifiers]|ifv: print intent filter verifier info

version: print database version info

write: write current settings now

installs: details about install sessions

check-permission []: does pkg hold perm?

: info about given package

installs: details about install sessions

例如,adb shell dumpsys activity -h

$ adb shell dumpsys activity -h

Activity manager dump options:

[-a] [-c] [-h] [cmd] ...

cmd may be one of:

a[ctivities]: activity stack state

b[roadcasts] [PACKAGE_NAME] [history [-s]]: broadcast state

i[ntents] [PACKAGE_NAME]: pending intent state

p[rocesses] [PACKAGE_NAME]: process state

o[om]: out of memory management

prov[iders] [COMP_SPEC ...]: content provider state

provider [COMP_SPEC]: provider client-side state

s[ervices] [COMP_SPEC ...]: service state

service [COMP_SPEC]: service client-side state

package [PACKAGE_NAME]: all state related to given package

all: dump all activities

top: dump the top activity

cmd may also be a COMP_SPEC to dump activities.

COMP_SPEC may be a component name (com.foo/.myApp),

a partial substring in a component name, a

hex object identifier.

-a: include all available server state.

-c: include client state.

例如,查看某个权限:

由adb shell dumpsys package -h可知,查看权限可以用:adb shell dumpsys package permissions

这会列举出手机中所有的权限。

如果只查看某一个权限可以使用adb shell dumpsys package permission 。注意这里的permission是不带s的。如果没有此选项说明手机版本比较旧了。

0x03 附dumpsys的源码

dumpsys 的代码在frameworks/native/cmds/dumpsys/dumpsys.cpp。

int main(int argc, char* const argv[])

{

signal(SIGPIPE, SIG_IGN);

sp sm = defaultServiceManager();

fflush(stdout);

Vector services;

Vector args;

bool showListOnly = false;

// 只有一个参数,即执行dumpsys -l,这时只是调用listServices()获取服务列表

if ((argc == 2) && (strcmp(argv[1], "-l") == 0)) {

showListOnly = true;

}

// argc == 1表示如果没有加任何参数,即只是执行dumpsys

// showListOnly表示执行dumpsys -l

// 这两种情况会获取服务列表

if ((argc == 1) || showListOnly) {

services = sm->listServices();

services.sort(sort_func);

args.add(String16("-a"));

} else {

// 如果有2个或2个以上参数,即执行dumpsys ...

// 这时被认为是服务名,即listServices()列出的名字

// 及之后的参数作为service->dump的参数

services.add(String16(argv[1]));

for (int i=2; i

args.add(String16(argv[i]));

}

}

const size_t N = services.size();

if (N > 1) {

// first print a list of the current services

aout << "Currently running services:" << endl;

for (size_t i=0; i

sp service = sm->checkService(services[i]);

if (service != NULL) {

aout << " " << services[i] << endl;

}

}

}

if (showListOnly) {//如果只有-l参数,则到此就返回了。

return 0;

}

// 执行到此,要么dumpsys没有参数,这时services中包含了所有的服务名,即将调用所有服务的dump()方法

// 要么dumpsys有多个参数,例如dumpsys package -h

for (size_t i=0; i

sp service = sm->checkService(services[i]); // dumpsys的第一个参数就是checkService的参数,要注意大小写。

if (service != NULL) {

if (N > 1) {

aout << "------------------------------------------------------------"

"-------------------" << endl;

aout << "DUMP OF SERVICE " << services[i] << ":" << endl;

}

int err = service->dump(STDOUT_FILENO, args); //调用指定service的dump方法,例如ActivityManagerService的dump()或者PackageManagerService的dump()方法

if (err != 0) {

aerr << "Error dumping service info: (" << strerror(err)

<< ") " << services[i] << endl;

}

} else {

aerr << "Can't find service: " << services[i] << endl;

}

}

return 0;

}

android dumpsys 命令,Android dumpsys命令的使用方法相关推荐

  1. Android调试系列之dumpsys命令

    Android调试系列之dumpsys命令 版权声明:本文为[viclee]原创,如需转载请注明出处~ https://blog.csdn.net/goodlixueyong/article/deta ...

  2. Android 性能分析工具dumpsys的使用(自己增加一部分在后面)

    Android提供的dumpsys工具可以用于查看感兴趣的系统服务信息与状态,手机连接电脑后可以直接命令行执行adb shell dumpsys 查看所有支持的Service但是这样输出的太多,可以通 ...

  3. android dumpsys 分析,Android开发调试性能分析工具:dumpsys

    dumpsys可以用来查看android系统运行过程中的信息状态,如CPU.内存使用.... 例1:查看dumpsys的"子命令" adbshell dumpsys | grep ...

  4. Android ADB原理及常用命令

    Android调试桥(ADB, Android Debug Bridge)是一个Android命令行工具,包含在SDK 平台工具包中,adb可以用于连接Android设备,或者模拟器,实现对设备的控制 ...

  5. android测试命令大全,Android 测试之 adb 常用命令

    1.查看设备信息 连接手机,终端执行命令adb devices,确保手机能连上电脑. (1)方法一:通过adb devices -l查看设备信息: (2)方法二:(推荐)通过adb shell get ...

  6. Android:玩转ADB命令(ADB命令使用大全)

    此文章内容整合自网络,欢迎转载. 我相信做Android开发的朋友都用过ADB命令,但是也只是限于安装应用push文件和设备重启相关,更深的就不知道了,其实我们完全可以了解多一点,有一些不常用的场景我 ...

  7. ReactNative生成android平台的bundle文件命令

    ReactNative生成android平台的bundle文件命令 2016年11月03日 23:23:28 阅读数:4869 注:如果assets文件没有正确生成,需要手机创建或授权 网上的其它的很 ...

  8. 【Android 逆向】Android 逆向通用工具开发 ( Android 端远程命令工具 | Android 端可执行程序的 main 函数操作 | TCP 协议服务器建立 | 接收客户端数据 )

    文章目录 前言 一.Android 端可执行程序的 main 函数操作 二.Android 端 TCP 协议服务器建立 三.Android 端接收 PC 端传来的数据 四.博客资源 前言 本篇博客重点 ...

  9. 【Android 逆向】Android 逆向通用工具开发 ( adb forward 网络端口重定向命令 | PC 端逆向程序主函数分析 )

    文章目录 前言 一.adb forward 网络端口重定向命令 二.PC 端逆向程序主函数分析 前言 本篇博客重点分析 PC 端 hacktool 模块 ; 一.adb forward 网络端口重定向 ...

最新文章

  1. 1.1.linux命令.概要学习
  2. MobileIMSDK怎样将Java服务端运行起来以及打成jar包运行
  3. i9 9900k mysql_i9-9900K和9900KS有什么区别?i9-9900KS和i9-9900K区别对比评测
  4. 苹果的倔强!今秋新iPhone外观设计将与2018年款非常相似
  5. SWF反编译软件Action Script Viewer ASV2011/08发布(AS3反编译引擎最重大升级)
  6. 解决了MovieClip缩略图问题
  7. 剑指offer面试题68 - I. 二叉搜索树的最近公共祖先(递归)(二叉搜索树)
  8. 【微服务直播】60分钟掌握微服务治理之道
  9. php编辑jquery弹出窗,jquery实现一个简单好用的弹出框
  10. 林子雨大数据java练习
  11. 记一次基于公众号的微信H5开发项目(一)
  12. ECCV 2022 | 悉尼大学提出:绝对尺度感知,鲁棒,以及可泛化的自监督单目深度估计网络DynaDepth
  13. 钒酸钠的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  14. 项目管理中,管理者如何打造团队执行力?
  15. 对YY/T 0287-2017 医疗器械 质量管理体系的一些学习
  16. 初试加解密工具RSA Tool 1.7
  17. Android4.2.2 SurfaceFlinger本地的FramebufferSurface实现真正的显示
  18. 利用浏览器F12排查前端(JSP)页面错误
  19. JSP | 判断三角形并计算面积(javabean)
  20. 女朋友问我 LB 是谁?

热门文章

  1. [kaggle]Humpback Whale Identification Challenge冠军方案
  2. mac icloud 桌面_如何使用iCloud将Mac的桌面和文档同步到其他设备
  3. mysql数据库导入sql文件失败解决办法
  4. 胡思乱想小记:为什么感觉英语单词比汉字还难记?
  5. 基于Java毕业设计新生报到管理系统源码+系统+mysql+lw文档+部署软件
  6. Android设计一个图片加载框架
  7. 【调剂】华南师范大学生物光子学研究院陈同生教授研究团队接受研究生调剂生(2022年)...
  8. 各品牌机进BIOS/启动设备选择/U盘启动按键
  9. 深度学习预处理工具---DALI详解
  10. 计网课设(智能酒店客房)