Android dumpsys使用

目录

  • 一、dumpsys命令介绍
    • 1.命令介绍
    • 2.服务查询和介绍
  • 二、核心服务信息查询
    • 1.package包信息查询
    • 2.activity信息查询
    • 3.window信息查询
  • 三、实现自定义服务dumpsys信息查询

一、dumpsys命令介绍

1.命令介绍

dumpsys是一种重要的调试安卓系统的工具,通过它可以得知你想知道的系统服务的一些信息,如输入dumpsys cpuinfo就可以得到当前CPU的使用信息。
命令格式: adb shell dumpsys [system serbices]

2.服务信息查询和介绍

常用的dumpsys指令如下所示:

 adb shell dumpsys -h							查询指令帮手
 adb shell dumpsys								查询系统中所有的服务信息,信息太多,一般不这么用
 adb shell dumpsys -l							查询支持dumpsys的系统服务列表
 adb shell dumpsys [service] --help				某服务查询指令使用帮助
 adb shell dumpsys [service] [cmd]				查询某服务的相关信息

二、核心服务信息查询

查询dumpsys指令使用帮助:adb shell dumpsys --help

C:\Users\uluxy181> adb shell dumpsys --help
usage: dumpsys
         To dump all services.
or:
       dumpsys [-t TIMEOUT] [--priority LEVEL] [--pid] [--help | -l | --skip SERVICES | SERVICE [ARGS]]
         --help: shows this help
         -l: only list services, do not dump them
         -t TIMEOUT_SEC: TIMEOUT to use in seconds instead of default 10 seconds
         -T TIMEOUT_MS: TIMEOUT to use in milliseconds instead of default 10 seconds
         --pid: dump PID instead of usual dump
         --proto: filter services that support dumping data in proto format. Dumps
               will be in proto format.
         --priority LEVEL: filter services based on specified priority
               LEVEL must be one of CRITICAL | HIGH | NORMAL
         --skip SERVICES: dumps all services but SERVICES (comma-separated list)
         SERVICE [ARGS]: dumps only service SERVICE, optionally passing ARGS to it`

1.package包信息查询

adb shell dumpsys package --help 输入指令后,指导信息如下所示
C:\Users\uluxy181> adb shell dumpsys package -h
Package manager dump options:
  [-h] [-f] [--checkin] [--all-components] [cmd] ...
    --checkin: dump for a checkin
    -f: print details of intent filters
    -h: print this help
    --all-components: include all component names in package dump
  cmd may be one of:
    apex: list active APEXes and APEX session state
    l[ibraries]: list known shared libraries
    f[eatures]: list device features
    k[eysets]: print known keysets
    r[esolvers] [activity|service|receiver|content]: 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
    q[ueries]: dump app queryability calculations
    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 <permission> <package> [<user>]: does pkg hold perm?
    dexopt: dump dexopt state
    compiler-stats: dump compiler statistics
    service-permissions: dump permissions required by services
    <package.name>: info about given package

2.activity信息查询

adb shell dumpsys activity --help 输入指令后,指导信息如下所示:

C:\Users\uluxy181> adb shell dumpsys activity -h
Activity manager dump options:
  [-a] [-c] [-p PACKAGE] [-h] [WHAT] ...
  WHAT may be one of:
    a[ctivities]: activity stack state
    r[recents]: recent activities state
    b[roadcasts] [PACKAGE_NAME] [history [-s]]: broadcast state
    broadcast-stats [PACKAGE_NAME]: aggregated broadcast statistics
    i[ntents] [PACKAGE_NAME]: pending intent state
    p[rocesses] [PACKAGE_NAME]: process state
    o[om]: out of memory management
    perm[issions]: URI permission grant state
    prov[iders] [COMP_SPEC ...]: content provider state
    provider [COMP_SPEC]: provider client-side state
    s[ervices] [COMP_SPEC ...]: service state
    allowed-associations: current package association restrictions
    as[sociations]: tracked app associations
    exit-info [PACKAGE_NAME]: historical process exit information
    lmk: stats on low memory killer
    lru: raw LRU process list
    binder-proxies: stats on binder objects and IPCs
    settings: currently applied config settings
    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
  WHAT 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.
  -p: limit output to given package.
  --checkin: output checkin format, resetting data.
  --C: output checkin format, not resetting data.
  --proto: output dump in protocol buffer format.
  --autofill: dump just the autofill-related state of an activity

3.window信息查询

adb shell dumpsys window -h

C:\Users\uluxy181> 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
    surfaces: active surfaces (debugging enabled only)
    d[isplays]: active display contents
    t[okens]: token list
    w[indows]: window list
    trace: print trace status and write Winscope trace to file
  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.
    "visible-apps" for the visible app windows.
  -a: include all available server state.
  --proto: output dump in protocol buffer format.

三、实现自定义服务dumpsys信息查询

如果期望自己的功能服务也能通过dumpsys指令打印关键信息,方法如下:
1、需要实现的服务必须继承binder;
2、重写dump()方法,在方法里加入想要打印的信息;
3、将这个服务对象添加到ServiceManager里;

        ServiceManager.addService("yfve_excpert_service", new TestDumpsys());
    }

    private static final class TestDumpsys extends Binder {
        void TestDumpsys() {
            LogUtil.i(TAG, "TestDumpsys ");
        }

        @Override
        protected void dump(FileDescriptor fd, PrintWriter fout, String[] args) {
            //super.dump(fd, fout, args);
            fout.println("*dump excpert TestDumpsys  service*");
        }
    }

按上面步骤加完服务所需要打印的内容,解决掉遇到selinux问题。运行服务后,通过dumpsys - l指令可以查看是否添加完成。我着demo里添加的dumpsys服务名字叫yfve_excpert_service;

C:\Users\uluxy181> adb shell dumpsys -l
  ...
  webviewupdate
  wifi
  wifinl80211
  wifip2p
  wifiscanner
  window
  yfve_core_service
  yfve_excpert_service
C:\Users\uluxy181>

你可能感兴趣的:(android开发辅助工具,android,adb)