• android_ADB 调试工具总结


    Android ADB 调试工具总结

    ADB,即 Android Debug Bridge

    Android 调试桥 (adb) 是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。该工具作为一个客户端-服务器程序,包括三个组件:

    • 客户端,该组件发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
    • 后台程序,该组件在设备上运行命令。后台程序在每个模拟器或设备实例上作为后台进程运行。
    • 服务器,该组件管理客户端和后台程序之间的通信。服务器在开发计算机上作为后台进程运行。

    可以在 android_sdk/platform-tools/ 中找到 adb 工具。

    命令

    终端下输入adb命令可以查看ADB工具的命令参数。

    Android Debug Bridge version 1.0.40
    Version 4986621
    Installed as E:\Android\Sdk\platform-tools\adb.exe
    
    global options:
     -a         listen on all network interfaces, not just localhost
     -d         use USB device (error if multiple devices connected)
     -e         use TCP/IP device (error if multiple TCP/IP devices available)
     -s SERIAL  use device with given serial (overrides $ANDROID_SERIAL)
     -t ID      use device with given transport id
     -H         name of adb server host [default=localhost]
     -P         port of adb server [default=5037]
     -L SOCKET  listen on given socket for adb server [default=tcp:localhost:5037]
    
    general commands:
     devices [-l]             list connected devices (-l for long output)
     help                     show this help message
     version                  show version num
    
    networking:
     connect HOST[:PORT]      connect to a device via TCP/IP [default port=5555]
     disconnect [HOST[:PORT]]
         disconnect from given TCP/IP device [default port=5555], or all
     forward --list           list all forward socket connections
     forward [--no-rebind] LOCAL REMOTE
         forward socket connection using:
           tcp:<port> (<local> may be "tcp:0" to pick any open port)
           localabstract:<unix domain socket name>
           localreserved:<unix domain socket name>
           localfilesystem:<unix domain socket name>
           dev:<character device name>
           jdwp:<process pid> (remote only)
     forward --remove LOCAL   remove specific forward socket connection
     forward --remove-all     remove all forward socket connections
     ppp TTY [PARAMETER...]   run PPP over USB
     reverse --list           list all reverse socket connections from device
     reverse [--no-rebind] REMOTE LOCAL
         reverse socket connection using:
           tcp:<port> (<remote> may be "tcp:0" to pick any open port)
           localabstract:<unix domain socket name>
           localreserved:<unix domain socket name>
           localfilesystem:<unix domain socket name>
     reverse --remove REMOTE  remove specific reverse socket connection
     reverse --remove-all     remove all reverse socket connections from device
    
    file transfer:
     push [--sync] LOCAL... REMOTE
         copy local files/directories to device
         --sync: only push files that are newer on the host than the device
     pull [-a] REMOTE... LOCAL
         copy files/dirs from device
         -a: preserve file timestamp and mode
     sync [all|data|odm|oem|product|system|vendor]
         sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)
         -l: list but don't copy
    
    shell:
     shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND...]
         run remote shell command (interactive shell if no command given)
         -e: choose escape character, or "none"; default '~'
         -n: don't read from stdin
         -T: disable PTY allocation
         -t: force PTY allocation
         -x: disable remote exit codes and stdout/stderr separation
     emu COMMAND              run emulator console command
    
    app installation:
     install [-lrtsdg] [--instant] PACKAGE
     install-multiple [-lrtsdpg] [--instant] PACKAGE...
         push package(s) to the device and install them
         -l: forward lock application
         -r: replace existing application
         -t: allow test packages
         -s: install application on sdcard
         -d: allow version code downgrade (debuggable packages only)
         -p: partial application install (install-multiple only)
         -g: grant all runtime permissions
         --instant: cause the app to be installed as an ephemeral install app
     uninstall [-k] PACKAGE
         remove this app package from the device
         '-k': keep the data and cache directories
    
    backup/restore:
       to show usage run "adb shell bu help"
    
    debugging:
     bugreport [PATH]
         write bugreport to given PATH [default=bugreport.zip];
         if PATH is a directory, the bug report is saved in that directory.
         devices that don't support zipped bug reports output to stdout.
     jdwp                     list pids of processes hosting a JDWP transport
     logcat                   show device log (logcat --help for more)
    
    security:
     disable-verity           disable dm-verity checking on userdebug builds
     enable-verity            re-enable dm-verity checking on userdebug builds
     keygen FILE
         generate adb public/private key; private key stored in FILE,
         public key stored in FILE.pub (existing files overwritten)
    
    scripting:
     wait-for[-TRANSPORT]-STATE
         wait for device to be in the given state
         State: device, recovery, sideload, or bootloader
         Transport: usb, local, or any [default=any]
     get-state                print offline | bootloader | device
     get-serialno             print <serial-number>
     get-devpath              print <device-path>
     remount                  remount partitions read-write
     reboot [bootloader|recovery|sideload|sideload-auto-reboot]
         reboot the device; defaults to booting system image but
         supports bootloader and recovery too. sideload reboots
         into recovery and automatically starts sideload mode,
         sideload-auto-reboot is the same but reboots after sideloading.
     sideload OTAPACKAGE      sideload the given full OTA package
     root                     restart adbd with root permissions
     unroot                   restart adbd without root permissions
     usb                      restart adb server listening on USB
     tcpip PORT               restart adb server listening on TCP on PORT
    
    internal debugging:
     start-server             ensure that there is a server running
     kill-server              kill the server if it is running
     reconnect                kick connection from host side to force reconnect
     reconnect device         kick connection from device side to force reconnect
     reconnect offline        reset offline/unauthorized devices to force reconnect
    
    environment variables:
     $ADB_TRACE
         comma-separated list of debug info to log:
         all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp
     $ADB_VENDOR_KEYS         colon-separated list of keys (files or directories)
     $ANDROID_SERIAL          serial number to connect to (see -s)
     $ANDROID_LOG_TAGS        tags to be used by logcat (see logcat --help)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134

    查询设备

    adb devices
    
    • 1

    输出格式如下

    List of devices attached

    serial_number state

    指定设备

    • 选择指定设备

      adb -s serial_numbe
      
      • 1
    • 选择唯一连接的 USB 设备

      adb -d
      
      • 1
    • 选择唯一运行的模拟器实例

      adb -e
      
      • 1

    安装应用

    adb install apk_path
    
    • 1

    支持参数

    参数说明
    -l标识本应用属于受限应用,应用将会被安装到保护目录
    -r替换已存在应用
    -t测试package标志,debug版本
    -s将应用安装到sdcard
    -d忽略版本号安装apk
    -p部分安装apk标志
    -g授予所有运行时权限
    –instant使应用程序作为临时安装应用程序安装

    命令格式

     install [-lrtsdg] [--instant] PACKAGE
     install-multiple [-lrtsdpg] [--instant] PACKAGE...
         push package(s) to the device and install them
         -l: forward lock application
         -r: replace existing application
         -t: allow test packages
         -s: install application on sdcard
         -d: allow version code downgrade (debuggable packages only)
         -p: partial application install (install-multiple only)
         -g: grant all runtime permissions
         --instant: cause the app to be installed as an ephemeral install app
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    常见的安装错误

    INSTALL_FAILED_ALREADY_EXISTS程序已经存在
    INSTALL_FAILED_INVALID_APK无效的APK
    INSTALL_FAILED_INVALID_URI无效的链接
    INSTALL_FAILED_INSUFFICIENT_STORAGE没有足够的存储空间
    INSTALL_FAILED_DUPLICATE_PACKAGE已存在同名程序
    INSTALL_FAILED_NO_SHARED_USER要求的共享用户不存在
    INSTALL_FAILED_UPDATE_INCOMPATIBLE版本不能共存
    INSTALL_FAILED_SHARED_USER_INCOMPATIBLE需求的共享用户签名错误
    INSTALL_FAILED_MISSING_SHARED_LIBRARY需求的共享库已丢失
    INSTALL_FAILED_REPLACE_COULDNT_DELETE需求的共享库无效
    INSTALL_FAILED_DEXOPTdex优化验证失败
    INSTALL_FAILED_OLDER_SDK系统版本过旧
    INSTALL_FAILED_CONFLICTING_PROVIDER存在同名的内容提供者
    INSTALL_FAILED_NEWER_SDK系统版本过新
    INSTALL_FAILED_TEST_ONLY调用者不被允许测试的测试程序
    INSTALL_FAILED_CPU_ABI_INCOMPATIBLE包含的本机代码不兼容
    CPU_ABIINSTALL_FAILED_MISSING_FEATURE使用了一个无效的特性
    INSTALL_FAILED_CONTAINER_ERRORSD卡访问失败
    INSTALL_FAILED_INVALID_INSTALL_LOCATION无效的安装路径
    INSTALL_FAILED_MEDIA_UNAVAILABLESD卡不存在
    INSTALL_FAILED_INTERNAL_ERROR系统问题导致安装失败
    DEFAULT未知错误

    卸载应用

    adb uninstall packagename
    
    • 1

    支持参数

    参数说明
    -k保留数据和缓存目录

    卸载应用需要使用应用的包名

    uninstall [-k] PACKAGE
    remove this app package from the device
    ‘-k’: keep the data and cache directories

    端口转发

    adb forward tcp:6100 local:logd 
    
    • 1

    可以使用 forward 命令设置任意端口转发 — 将对特定主机端口的请求转发到模拟器/设备实例上的其他端口。

    设置主机端口 6100 到模拟器/设备端口 7100 的转发:adb forward tcp:6100 tcp:710

    推送文件

    adb push local remote
    
    • 1

    将文件文件或目录(及其子目录)复制到模拟器或设备

    下载文件

    adb pull remote local
    
    • 1

    从模拟器或设备复制文件或目录(及其子目录)

    启动和停止adb服务

    adb start-server 启动adb服务
    adb kill-server  关闭adb服务
    
    • 1
    • 2

    发出shell命令

    adb [-d|-e|-s serial_number] shell shell_command
    
    • 1

    可以向设备发送shell命令进行调试

    获取root权限

    adb root
    
    • 1

    重新挂载分区

    adb remount
    
    • 1

    屏幕截图

    截取当前屏幕画面

    screencap [-hp] [-d display-id] [FILENAME]
       -h: this message
       -p: save the file as a png.
       -d: specify the display id to capture, default 0.
    If FILENAME ends with .png it will be saved as a png.
    If FILENAME is not given, the results will be printed to stdout.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    参数说明

    命令说明使用
    -h帮助信息
    -p将文件保存为pngscreencap -p /mnt/card/test.png
    -d显示捕获的信息?

    如果文件名以png结尾,将会作为png保存,如果没有给出文件名,将结果打印到标准输出。

    示例

    screencap filename
    
    • 1

    屏幕截图

    录制屏幕内容

    usage: screenshot [-s soundfile] filename.png
       -s: play a sound effect to signal success
       -i: autoincrement to avoid overwriting filename.png
    
    • 1
    • 2
    • 3

    参数说明

    参数说明
    -s播放声音效果,如果成功
    -i自动增量避免filename.png被重写

    示例

    screenshot -s /sdcard/screen.png
    
    • 1

    录制屏幕

    录制屏幕内容

    Usage: screenrecord [options] <filename>
    
    Records the device's display to a .mp4 file.
    
    Options:
    --size WIDTHxHEIGHT
        Set the video size, e.g. "1280x720".  Default is the device's main
        display resolution (if supported), 1280x720 if not.  For best results,
        use a size supported by the AVC encoder.
    --bit-rate RATE
        Set the video bit rate, in megabits per second.  Default 4Mbps.
    --time-limit TIME
        Set the maximum recording time, in seconds.  Default / maximum is 180.
    --rotate
        Rotate the output 90 degrees.
    --verbose
        Display interesting information on stdout.
    --help
        Show this message.
    
    Recording continues until Ctrl-C is hit or the time limit is reached.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    参数说明

    命令说明
    –size WIDTHxHEIGHT设置视频大小如"1280x720"。默认是设备的主显示分辨率如果支持的话,使用AVC编码支持为了更好的结果
    –bit-rate RATE设置视频的比特率,没每秒兆比特。默认4mbps
    –time-limit TIME设置最大记录时间,秒。默认值/最大值为180秒
    –rotate旋转输出90度
    –verbose显示在标准输出上有趣的信息
    –help帮助信息

    LOGCAT

    Usage: logcat [options] [filterspecs]
    options include:
      -s              Set default filter to silent.
                      Like specifying filterspec '*:S'
      -f <filename>   Log to file. Default is stdout
      -r <kbytes>     Rotate log every kbytes. Requires -f
      -n <count>      Sets max number of rotated logs to <count>, default 4
      -v <format>     Sets the log print format, where <format> is:
    
                          brief color long printable process raw tag thread
                          threadtime time usec
    
      -D              print dividers between each log buffer
      -c              clear (flush) the entire log and exit
      -d              dump the log and then exit (don't block)
      -t       print only the most recent  lines (implies -d)
      -t '<time>'     print most recent lines since specified time (implies -d)
      -T       print only the most recent  lines (does not imply -d)
      -T '<time>'     print most recent lines since specified time (not imply -d)
                      count is pure numerical, time is 'MM-DD hh:mm:ss.mmm'
      -g              get the size of the log's ring buffer and exit
      -L              dump logs from prior to last reboot
      -b <buffer>     Request alternate ring buffer, 'main', 'system', 'radio',
                      'events', 'crash' or 'all'. Multiple -b parameters are
                      allowed and results are interleaved. The default is
                      -b main -b system -b crash.
      -B              output the log in binary.
      -S              output statistics.
      -G <size>       set size of log ring buffer, may suffix with K or M.
      -p              print prune white and ~black list. Service is specified as
                      UID, UID/PID or /PID. Weighed for quicker pruning if prefix
                      with ~, otherwise weighed for longevity if unadorned. All
                      other pruning activity is oldest first. Special case ~!
                      represents an automatic quicker pruning for the noisiest
                      UID as determined by the current statistics.
      -P ' ...' set prune white and ~black list, using same format as
                      printed above. Must be quoted.
    
    filterspecs are a series of 
      <tag>[:priority]
    
    where <tag> is a log component tag (or * for all) and priority is:
      V    Verbose (default for <tag>)
      D    Debug (default for '*')
      I    Info
      W    Warn
      E    Error
      F    Fatal
      S    Silent (suppress all output)
    
    '*' by itself means '*:D' and <tag> by itself means <tag>:V.
    If no '*' filterspec or -s on command line, all filter defaults to '*:V'.
    eg: '*:S ' prints only <tag>, ':S' suppresses all <tag> log messages.
    
    If not specified on the command line, filterspec is set from ANDROID_LOG_TAGS.
    
    If not specified with -v on command line, format is set from ANDROID_PRINTF_LOG
    or defaults to "threadtime"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    使用参数

    参数描述
    -b 加载一个可使用的日志缓冲区供查看,比如event和radio。默认值是main
    -c清除缓冲区中的全部日志并退出(清除完后可以使用-g查看缓冲区)
    -d将缓冲区的log转存到屏幕中然后退出
    -f 将log输出到指定的文件中<文件名>.默认为标准输出(stdout)
    -g打印日志缓冲区的大小并退出
    -n 设置日志的最大数目,默认值是4,需要和-r选项一起使用
    -r 当日志文件达到指定kbytes时,使用新文件记录。默认值是16,需要和-f选项一起使用
    -s设置过滤器
    -v 设置输出格式的日志消息。默认是短暂的格式。支持的格式列表
    • -s
      可以设置过滤的log级别
      adb logcat -s *:W adb logcat -s Settings:V
      注:log的级别有以下
      V verbose
      D debug
      I info
      W warning
      E error
      F fatal
      S silent

    • -f
      指定log输出到文件
      在设备内可以,不能通过adb logcat -f filename运行
      logcat -f /sdcard/log.txt是可以的

    • -v
      设置日志打印格式,其中<格式>是

      • brief
      • process
      • tag
      • thread
      • raw
      • time
      • threadtime
      • long
    • -c
      清除(刷新)整个日志

    • -d
      将缓冲区的log打印到屏幕并退出(不会阻塞)

    • -t
      只打印最新的几条log

    • -g
      获取日志的环形缓冲区和出口规模adb logcat -g 命令

      main: ring buffer is 256Kb (233Kb consumed), max entry is 5120b, max payload is 4076b
      system: ring buffer is 256Kb (255Kb consumed), max entry is 5120b, max payload is 4076b
      crash: ring buffer is 256Kb (26Kb consumed), max entry is 5120b, max payload is 4076b
      
      • 1
      • 2
      • 3
    • -b
      加载一个可使用的日志缓冲区提供查看,默认值是main

      • main
      • system
      • radio
      • events
      adb logcat -b main -b system -b radio -b events
      adb logcat -b all
      
      • 1
      • 2

      在Android中不同的log写到不同的设备中,共有/dev/log/system, /dev/log/main, /dev/log/radion, /dev/log/events四中类型。
      其中默认Log.v等写入/dev/log/main中。Slog写入/dev/log/system中。
      adb logcat 输出的只有system log

    • -B
      以二进制方式输出日志

    • -S
      输出统计

    • -G
      设置日志环缓冲区的大小,可以用K或M后缀
      adb logcat -G 20M

    • -p(不清楚)
      打印白和黑名单。服务指定为UID,UID / PID或者PID。如果用前缀的话,要修剪更快的重量,否则,如果不加修饰的话,会延长寿命。其他所有修剪活动都是最早的。特殊情况
      是一个自动快速修剪最吵闹的UID由目前的统计确定。

    • -P ‘ …’
      set prune white and ~black list, using same format as printed above. Must be quoted

    main: ring buffer is 256Kb (233Kb consumed), max entry is 5120b, max payload is 4076b
    system: ring buffer is 256Kb (255Kb consumed), max entry is 5120b, max payload is 4076b
    crash: ring buffer is 256Kb (26Kb consumed), max entry is 5120b, max payload is 4076b
    
    • 1
    • 2
    • 3

    ADB logcat用法

    使用WIFI调试

    方法1:(电脑端和手机端)

    1.让电脑和手机处于同一个wifi下。

    2.将手机进行root,如果没有root下载一个360的一键root,很方便。

    3.手机端下载Wifi_ADB(本人测试成功)或者adb_wireless(本人测试不成功),打开运行。

    4.电脑端打开cmd窗口,进入adb.exe所在目录(在sdk/platform-tools目录下),输入adb connect a.b.c.d 其中a.b.c.d是手机端ip,在Wifi_ADB中会显示。

    5.eclipse中正常运行程序就可以通过wifi来调试了。

    三、方法2:(电脑端和手机端)

    1.同方法1.1

    2.同方法1.2

    3.下载一个shell软件,网上有很多。(从手机端设置,不用再下载Wifi_ADB或adb_wireless)

    su//获取root权限
    setprop service.adb.tcp.port 5555//设置监听的端口,端口可以自定义,如5554,5555是默认的
    stop adbd//关闭adbd
    start adbd//重新启动adbd

    4.同方法1.4,但是有一点需要注意,就是如果在第三步中将端口设置为5555之外的端口的话,则需要adb connect a.b.c.d:e,其中e是新设定的端口号。

    5.同方法1.5

    6.如果要关闭的话,则将第三步中的5555改成-1重新执行一遍即可。

    常用命令

    • 抓取dumpsys

      adb shell dumpsys
      
      • 1
      • 获取应用内存信息

        adb shell dumpsys meminfo <package_name>
        
        • 1

        名词说明

        dalvikdalvik使用的内存
        nativenative堆上的内存,指C\C++堆的内存(android 3.0以后bitmap就是放在这儿)
        other除了dalvik和native的内存,包含C\C++非堆内存
        Pss该内存指将共享内存按比例分配到使用了共享内存的进程
        allocated已使用的内存
        free空闲的内存
        private dirty非共享,又不能被换页出去的内存(比如linux系统中为了提高分配内存速度而缓冲的小对象,即使你的进程已经退出,该内存也不会被释放)
        share dirty共享,但有不能被换页出去的内存
    • 抓取dumpstate

      adb shell dumpstate
      
      • 1
    • 抓取内核信息,kernel log

      adb shell dmesg
      
      • 1
    • 设置settings数据库

      adb shell settings
      
      • 1
    • 控制系统属性

      adb shell setprop
      adb shell getprop
      
      • 1
      • 2
    • 输入事件

      adb shell input
      
      • 1
      • 输入按键事件

        adb sehll input keyevent event_value
        
        • 1
      • 在屏幕上做划屏操作
        前四个数为坐标点,后面是滑动的时间(单位毫秒)

        adb shell input swipe x1 y1 x2 y2 time
        
        • 1
      • 在屏幕上做点击操作
        屏幕上点击坐标点x, y的位置。androi系统中坐标(0,0)在左上角。

        adb shell input tap x y
        
        • 1
      • 输入字符
        str表示输入的文本

        adb shell input text str
        
        • 1
    • 窗口管理

      adb shell wm
      
      • 1
    • 进程信息

      adb shell ps
      
      • 1
    • cup占用情况

      adb shell top
      
      • 1

      常用参数说明

      参数说明
      -m显示数量
      -s按指定行排序
      • 查看cpu占用

        top -m 10 -s cpu
        
        • 1
    • busybox

      adb shell busybox
      
      • 1

    Android Shell命令

    am

    控制Activity Manager 常用命令

    命令说明
    start [options] intent启动 intent 指定的 Activity。请参阅 intent 参数的规范。选项包括:· -D:启用调试。· -W:等待启动完成。· --start-profiler file:启动分析器并将结果发送到 file。· -P file:类似于 --start-profiler,但当应用进入空闲状态时分析停止。· -R count:重复 Activity 启动 count 次数。在每次重复前,将完成顶部 Activity。· -S:启动 Activity 前强行停止目标应用。· --opengl-trace:启用 OpenGL 函数的跟踪。· --user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。
    startservice [options] intent启动 intent 指定的 Service。请参阅 intent 参数的规范。选项包括:· --user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。
    force-stop package强行停止与 package(应用的包名称)关联的所有应用。
    kill [options] package终止与 package(应用的包名称)关联的所有进程。此命令仅终止可安全终止且不会影响用户体验的进程。选项包括:· --user user_id | all | current:指定将终止其进程的用户;如果未指定,则终止所有用户的进程。
    kill-all终止所有后台进程。
    broadcast [options] intent发出广播 intent。请参阅 intent 参数的规范。选项包括:· [–user user_id | all | current]:指定要发送到的用户;如果未指定,则发送到所有用户。
    instrument [options] component使用 Instrumentation 实例启动监控。通常,目标 component 是表单 test_package/runner_class。选项包括:· -r:输出原始结果(否则对 report_key_streamresult 进行解码)。与 [-e perf true] 结合使用以生成性能测量的原始输出。· -e name value:将参数 name 设为 value。对于测试运行器,通用表单为 -etestrunner_flag value[,value…]。· -p file:将分析数据写入 file。· -w:先等待仪器完成,然后再返回。测试运行器需要使用此选项。· --no-window-animation:运行时关闭窗口动画。· --user user_id | current:指定仪器在哪个用户中运行;如果未指定,则在当前用户中运行。
    profile start process file启动 process 的分析器,将结果写入 file。
    profile stop process停止 process 的分析器。
    dumpheap [options] process file转储 process 的堆,写入 file。选项包括:· --user [user_id|current]:提供进程名称时,指定要转储的进程用户;如果未指定,则使用当前用户。· -n:转储原生堆,而非托管堆。
    set-debug-app [options] package将应用 package 设为调试。选项包括:· -w:应用启动时等待调试程序。· --persistent:保留此值。
    clear-debug-app使用 set-debug-app 清除以前针对调试用途设置的软件包。
    monitor [options]启动对崩溃或 ANR 的监控。选项包括:· --gdb:在崩溃/ANR 时在给定端口上启动 gdbserv。
    screen-compat {on|off} package控制 package 的屏幕兼容性模式。
    display-size [reset|widthxheight]替换模拟器/设备显示尺寸。此命令对于在不同尺寸的屏幕上测试您的应用非常有用,它支持使用大屏设备模仿小屏幕分辨率(反之亦然)。示例: am display-size 1280x800
    display-density dpi替换模拟器/设备显示密度。此命令对于在不同密度的屏幕上测试您的应用非常有用,它支持使用低密度屏幕在高密度环境环境上进行测试(反之亦然)。示例: am display-density 480
    to-uri intent将给定的 intent 规范以 URI 的形式输出。请参阅 intent 参数的规范
    to-intent-uri intent将给定的 intent 规范以 intent:URI 的形式输出。请参阅 intent 参数的规范

    intent 参数的规范

    对于采用 intent 参数的 Activity Manager 命令,您可以使用以下选项指定 intent:

    -a action

    指定 intent 操作,如“android.intent.action.VIEW”。此指定只能声明一次。

    -d data_uri

    指定 intent 数据 URI,如“content://contacts/people/1”。此指定只能声明一次。

    -t mime_type

    指定 intent MIME 类型,如“image/png”。此指定只能声明一次。

    -c category

    指定 intent 类别,如“android.intent.category.APP_CONTACTS”。

    -n component

    指定带有软件包名称前缀的组件名称以创建显式 intent,如“com.example.app/.ExampleActivity”。

    -f flags

    将标志添加到 setFlags() 支持的 intent。

    –esn extra_key

    添加一个 null extra。URI intent 不支持此选项。

    -e|–es extra_key extra_string_value

    添加字符串数据作为键值对。

    –ez extra_key extra_boolean_value

    添加布尔型数据作为键值对。

    –ei extra_key extra_int_value

    添加整数型数据作为键值对。

    –el extra_key extra_long_value

    添加长整型数据作为键值对。

    –ef extra_key extra_float_value

    添加浮点型数据作为键值对。

    –eu extra_key extra_uri_value

    添加 URI 数据作为键值对。

    –ecn extra_key extra_component_name_value

    添加组件名称,将其作为 ComponentName 对象进行转换和传递。

    –eia extra_key extra_int_value[,extra_int_value…]

    添加整数数组。

    –ela extra_key extra_long_value[,extra_long_value…]

    添加长整型数组。

    –efa extra_key extra_float_value[,extra_float_value…]

    添加浮点型数组。

    –grant-read-uri-permission

    包含标志 FLAG_GRANT_READ_URI_PERMISSION

    –grant-write-uri-permission

    包含标志 FLAG_GRANT_WRITE_URI_PERMISSION

    –debug-log-resolution

    包含标志 FLAG_DEBUG_LOG_RESOLUTION

    –exclude-stopped-packages

    包含标志 FLAG_EXCLUDE_STOPPED_PACKAGES

    –include-stopped-packages

    包含标志 FLAG_INCLUDE_STOPPED_PACKAGES

    –activity-brought-to-front

    包含标志 FLAG_ACTIVITY_BROUGHT_TO_FRONT

    –activity-clear-top

    包含标志 FLAG_ACTIVITY_CLEAR_TOP

    –activity-clear-when-task-reset

    包含标志 FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

    –activity-exclude-from-recents

    包含标志 FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

    –activity-launched-from-history

    包含标志 FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

    –activity-multiple-task

    包含标志 FLAG_ACTIVITY_MULTIPLE_TASK

    –activity-no-animation

    包含标志 FLAG_ACTIVITY_NO_ANIMATION

    –activity-no-history

    包含标志 FLAG_ACTIVITY_NO_HISTORY

    –activity-no-user-action

    包含标志 FLAG_ACTIVITY_NO_USER_ACTION

    –activity-previous-is-top

    包含标志 FLAG_ACTIVITY_PREVIOUS_IS_TOP

    –activity-reorder-to-front

    包含标志 FLAG_ACTIVITY_REORDER_TO_FRONT

    –activity-reset-task-if-needed

    包含标志 FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

    –activity-single-top

    包含标志 FLAG_ACTIVITY_SINGLE_TOP

    –activity-clear-task

    包含标志 FLAG_ACTIVITY_CLEAR_TASK

    –activity-task-on-home

    包含标志 FLAG_ACTIVITY_TASK_ON_HOME

    –receiver-registered-only

    包含标志 FLAG_RECEIVER_REGISTERED_ONLY

    –receiver-replace-pending

    包含标志 FLAG_RECEIVER_REPLACE_PENDING

    –selector

    需要使用 -d 和 -t 选项以设置 intent 数据和类型。

    URI component package

    如果不受上述某一选项的限制,您可以直接指定 URI、软件包名称和组件名称。当参数不受限制时,如果参数包含一个“:”(冒号),则此工具假定参数是一个 URI;如果参数包含一个“/”(正斜杠),则此工具假定参数是一个组件名称;否则,此工具假定参数是一个软件包名称。

    broadcast

    am broadcast 命令可以发送系统广播

    参数说明

    [-a <ACTION>]
    [-d <DATA_URI>]
    [-t <MIME_TYPE>] 
    [-c <CATEGORY> [-c <CATEGORY>] ...] 
    [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE>]
    [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...] 
    [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...] 
    [-n <COMPONENT>]
    [-f <FLAGS>] 
    [<URI>]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    示例:adb shell am startservice -n "jun.gpsprovidertest/.GPSTestService" --ez gps true

    start

    启动一个activity

    adb shell am start -n packagename/packagename.activityname
    
    • 1

    示例:adb shell am start -n com.android.settings/.Settings

    startservice

    启动一个系统服务

    adb shell am startservice -n packagename/packagename.servicename
    
    • 1

    pm

    包管理,对应PackageManagerService服务。

    usage: pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
           pm list permission-groups
           pm list permissions [-g] [-f] [-d] [-u] [GROUP]
           pm list instrumentation [-f] [TARGET-PACKAGE]
           pm list features
           pm list libraries
           pm list users
           pm path PACKAGE
           pm dump PACKAGE
           pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f]
                      [--algo <algorithm name> --key <key-in-hex> --iv <IV-in-hex>]
                      [--originating-uri <URI>] [--referrer <URI>] PATH
           pm uninstall [-k] PACKAGE
           pm clear [--user USER_ID] PACKAGE
           pm enable [--user USER_ID] PACKAGE_OR_COMPONENT
           pm disable [--user USER_ID] PACKAGE_OR_COMPONENT
           pm disable-user [--user USER_ID] PACKAGE_OR_COMPONENT
           pm disable-until-used [--user USER_ID] PACKAGE_OR_COMPONENT
           pm block [--user USER_ID] PACKAGE_OR_COMPONENT
           pm unblock [--user USER_ID] PACKAGE_OR_COMPONENT
           pm grant PACKAGE PERMISSION
           pm revoke PACKAGE PERMISSION
           pm set-install-location [0/auto] [1/internal] [2/external]
           pm get-install-location
           pm set-permission-enforced PERMISSION [true|false]
           pm trim-caches DESIRED_FREE_SPACE
           pm create-user USER_NAME
           pm remove-user USER_ID
           pm get-max-users
    
    pm list packages: prints all packages, optionally only
      those whose package name contains the text in FILTER.  Options:
        -f: see their associated file.
        -d: filter to only show disbled packages.
        -e: filter to only show enabled packages.
        -s: filter to only show system packages.
        -3: filter to only show third party packages.
        -i: see the installer for the packages.
        -u: also include uninstalled packages.
    
    pm list permission-groups: prints all known permission groups.
    
    pm list permissions: prints all known permissions, optionally only
      those in GROUP.  Options:
        -g: organize by group.
        -f: print all information.
        -s: short summary.
        -d: only list dangerous permissions.
        -u: list only the permissions users will see.
    
    pm list instrumentation: use to list all test packages; optionally
      supply <TARGET-PACKAGE> to list the test packages for a particular
      application.  Options:
        -f: list the .apk file for the test package.
    
    pm list features: prints all features of the system.
    
    pm list users: prints all users on the system.
    
    pm path: print the path to the .apk of the given PACKAGE.
    
    pm dump: print system state associated w ith the given PACKAGE.
    
    pm install: installs a package to the system.  Options:
        -l: install the package with FORWARD_LOCK.
        -r: reinstall an exisiting app, keeping its data.
        -t: allow test .apks to be installed.
        -i: specify the installer package name.
        -s: install package on sdcard.
        -f: install package on internal flash.
        -d: allow version code downgrade.
    
    pm uninstall: removes a package from the system. Options:
        -k: keep the data and cache directories around after package removal.
    
    pm clear: deletes all data associated with a package.
    
    pm enable, disable, disable-user, disable-until-used: these commands
      change the enabled state of a given package or component (written
      as "package/class").
    
    pm grant, revoke: these commands either grant or revoke permissions
      to applications.  Only optional permissions the application has
      declared can be granted or revoked.
    
    pm get-install-location: returns the current install location.
        0 [auto]: Let system decide the best location
        1 [internal]: Install on internal device storage
        2 [external]: Install on external media
    
    pm set-install-location: changes the default install location.
      NOTE: this is only intended for debugging; using this can cause
      applications to break and other undersireable behavior.
        0 [auto]: Let system decide the best location
        1 [internal]: Install on internal device storage
        2 [external]: Install on external media
    
    pm trim-caches: trim cache files to reach the given free space.
    
    pm create-user: create a new user with the given USER_NAME,
      printing the new user identifier of the user.
    
    pm remove-user: remove the user with the given USER_IDENTIFIER,
      deleting all data associated with that user
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    命令说明
    list packages [options] filter输出所有软件包,或者,仅输出包名称包含 filter 中的文本的软件包。选项:· -f:查看它们的关联文件。· -d:进行过滤以仅显示已停用的软件包。· -e:进行过滤以仅显示已启用的软件包。· -s:进行过滤以仅显示系统软件包。· -3:进行过滤以仅显示第三方软件包。· -i:查看软件包的安装程序。· -u:也包括卸载的软件包。· --user user_id:要查询的用户空间。
    list permission-groups输出所有已知的权限组。
    list permissions [options] group输出所有已知权限,或者,仅输出 group 中的权限。选项:· -g:按组加以组织。· -f:输出所有信息。· -s:简短摘要。· -d:仅列出危险权限。· -u:仅列出用户将看到的权限。
    list instrumentation [options]列出所有测试软件包。选项:· -f:列出用于测试软件包的 APK 文件。· target_package:列出仅用于此应用的测试软件包。
    list features输出系统的所有功能。
    list libraries输出当前设备支持的所有库。
    list users输出系统上的所有用户。
    path package输出给定 package 的 APK 的路径。
    install [options] path将软件包(通过 path 指定)安装到系统。选项:· -l:安装具有转发锁定功能的软件包。· -r:重新安装现有应用,保留其数据。· -t:允许安装测试 APK。· -i installer_package_name:指定安装程序软件包名称。· -s:在共享的大容量存储(如 sdcard)上安装软件包。· -f:在内部系统内存上安装软件包。· -d:允许版本代码降级。· -g:授予应用清单中列出的所有权限。
    uninstall [options] package从系统中移除软件包。选项:· -k:移除软件包后保留数据和缓存目录。
    clear package删除与软件包关联的所有数据。
    enable package_or_component启用给定软件包或组件(作为“package/class”写入)。
    disable package_or_component停用给定软件包或组件(作为“package/class”写入)。
    disable-user [options] package_or_component选项:· --user user_id:要停用的用户。
    grant package_name permission向应用授予权限。在运行 Android 6.0(API 级别 23)及更高版本的设备上,可以是应用清单中声明的任何权限。在运行 Android 5.1(API 级别 22)和更低版本的设备上,必须是应用定义的可选权限。
    revoke package_name permission从应用中撤销权限。在运行 Android 6.0(API 级别 23)及更高版本的设备上,可以是应用清单中声明的任何权限。在运行 Android 5.1(API 级别 22)和更低版本的设备上,必须是应用定义的可选权限。
    set-install-location location更改默认安装位置。位置值:· 0:自动—让系统决定最佳位置。· 1:内部—安装在内部设备存储上。· 2:外部—安装在外部介质上。注:此命令仅用于调试目的;使用此命令会导致应用中断和其他意外行为。
    get-install-location返回当前安装位置。返回值:· 0 [auto]:让系统决定最佳位置。· 1 [internal]:安装在内部设备存储上· 2 [external]:安装在外部介质上
    set-permission-enforced permission [true|false]指定是否应强制执行给定的权限。
    trim-caches desired_free_space减少缓存文件以达到给定的可用空间。
    create-user user_name使用给定的 user_name 创建新用户,输出新用户的标识符。
    remove-user user_id移除具有给定的 user_id 的用户,删除与该用户关联的所有数据。
    get-max-users输出设备支持的最大用户数。

    settings

    操作Settings数据库

    adb shell settings as
    usage:  settings [--user NUM] get namespace key
            settings [--user NUM] put namespace key value
    
    
    • 1
    • 2
    • 3
    • 4

    Android4.2的源码Android-17\com\android\commands目录下较之前的版本多了一个settings命令,查看其中的SettingsCmd.Java文

    • System
    • Secure
    • Global

    input

    输入事件

    Usage: input [<source>] <command> [<arg>...]
    
    The sources are: 
          trackball
          joystick
          touchnavigation
          mouse
          keyboard
          gamepad
          touchpad
          dpad
          stylus
          touchscreen
    
    The commands and default sources are:
          text <string> (Default: touchscreen)
          keyevent [--longpress] <key code number or name> ... (Default: keyboard)
          tap <x> <y> (Default: touchscreen)
          swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
          press (Default: trackball)
          roll <dx> <dy> (Default: trackball)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    参数说明

    命令说明
    text 该命令主要是用于向获得焦点的EditText控件输入内容默认来源:touchscreen
    keyevent [–longpress] 该命令主要是向系统发送一个按键指令,实现模拟用户在键盘上的按键动作默认来源:keyboard
    tap 该命令是用于向设备[屏幕、触摸板、导航键]发送一个点击操作的指令。参数是X Y。一般设备都是屏幕坐标默认来源:touchscreen
    swipe [duration(ms)]向设备发送一个滑动的指令,并且可以选择设置滑动的时长默认来源:touchscreen
    press (Default: trackball)这个命令是模拟轨迹球发送点击命令,因为现在手机设备上没有轨迹球,然并卵.默认来源:trackball
    roll (Default: trackball)这个命令是模拟轨迹球发送滚动命令同样,然并卵默认来源:trackball

    输入事件源

    描述说明
    trackball轨迹球
    joystick操纵杆
    touchnavigation
    mouse鼠标
    keyboard键盘
    gamepad游戏手柄
    touchpad触摸板
    dpadDPAD
    stylus手写笔
    touchscreen触摸屏

    按键值

    每个数字与keycode对应表如下:
    0 -->  "KEYCODE_UNKNOWN"
    1 -->  "KEYCODE_MENU"
    2 -->  "KEYCODE_SOFT_RIGHT"
    3 -->  "KEYCODE_HOME"
    4 -->  "KEYCODE_BACK"
    5 -->  "KEYCODE_CALL"
    6 -->  "KEYCODE_ENDCALL"
    7 -->  "KEYCODE_0"
    8 -->  "KEYCODE_1"
    9 -->  "KEYCODE_2"
    10 -->  "KEYCODE_3"
    11 -->  "KEYCODE_4"
    12 -->  "KEYCODE_5"
    13 -->  "KEYCODE_6"
    14 -->  "KEYCODE_7"
    15 -->  "KEYCODE_8"
    16 -->  "KEYCODE_9"
    17 -->  "KEYCODE_STAR"
    18 -->  "KEYCODE_POUND"
    19 -->  "KEYCODE_DPAD_UP"
    20 -->  "KEYCODE_DPAD_DOWN"
    21 -->  "KEYCODE_DPAD_LEFT"
    22 -->  "KEYCODE_DPAD_RIGHT"
    23 -->  "KEYCODE_DPAD_CENTER"
    24 -->  "KEYCODE_VOLUME_UP"
    25 -->  "KEYCODE_VOLUME_DOWN"
    26 -->  "KEYCODE_POWER"
    27 -->  "KEYCODE_CAMERA"
    28 -->  "KEYCODE_CLEAR"
    29 -->  "KEYCODE_A"
    30 -->  "KEYCODE_B"
    31 -->  "KEYCODE_C"
    32 -->  "KEYCODE_D"
    33 -->  "KEYCODE_E"
    34 -->  "KEYCODE_F"
    35 -->  "KEYCODE_G"
    36 -->  "KEYCODE_H"
    37 -->  "KEYCODE_I"
    38 -->  "KEYCODE_J"
    39 -->  "KEYCODE_K"
    40 -->  "KEYCODE_L"
    41 -->  "KEYCODE_M"
    42 -->  "KEYCODE_N"
    43 -->  "KEYCODE_O"
    44 -->  "KEYCODE_P"
    45 -->  "KEYCODE_Q"
    46 -->  "KEYCODE_R"
    47 -->  "KEYCODE_S"
    48 -->  "KEYCODE_T"
    49 -->  "KEYCODE_U"
    50 -->  "KEYCODE_V"
    51 -->  "KEYCODE_W"
    52 -->  "KEYCODE_X"
    53 -->  "KEYCODE_Y"
    54 -->  "KEYCODE_Z"
    55 -->  "KEYCODE_COMMA"
    56 -->  "KEYCODE_PERIOD"
    57 -->  "KEYCODE_ALT_LEFT"
    58 -->  "KEYCODE_ALT_RIGHT"
    59 -->  "KEYCODE_SHIFT_LEFT"
    60 -->  "KEYCODE_SHIFT_RIGHT"
    61 -->  "KEYCODE_TAB"
    62 -->  "KEYCODE_SPACE"
    63 -->  "KEYCODE_SYM"
    64 -->  "KEYCODE_EXPLORER"
    65 -->  "KEYCODE_ENVELOPE"
    66 -->  "KEYCODE_ENTER"
    67 -->  "KEYCODE_DEL"
    68 -->  "KEYCODE_GRAVE"
    69 -->  "KEYCODE_MINUS"
    70 -->  "KEYCODE_EQUALS"
    71 -->  "KEYCODE_LEFT_BRACKET"
    72 -->  "KEYCODE_RIGHT_BRACKET"
    73 -->  "KEYCODE_BACKSLASH"
    74 -->  "KEYCODE_SEMICOLON"
    75 -->  "KEYCODE_APOSTROPHE"
    76 -->  "KEYCODE_SLASH"
    77 -->  "KEYCODE_AT"
    78 -->  "KEYCODE_NUM"
    79 -->  "KEYCODE_HEADSETHOOK"
    80 -->  "KEYCODE_FOCUS"
    81 -->  "KEYCODE_PLUS"
    82 -->  "KEYCODE_MENU"
    83 -->  "KEYCODE_NOTIFICATION"
    84 -->  "KEYCODE_SEARCH"
    85 -->  "TAG_LAST_KEYCODE"
    
    KEYCODE列表
    电话键
    KEYCODE_CALL	拨号键	5
    KEYCODE_ENDCALL	挂机键	6
    KEYCODE_HOME	按键Home	3
    KEYCODE_MENU	菜单键	82
    KEYCODE_BACK	返回键	4
    KEYCODE_SEARCH	搜索键	84
    KEYCODE_CAMERA	拍照键	27
    KEYCODE_FOCUS	拍照对焦键	80
    KEYCODE_POWER	电源键	26
    KEYCODE_NOTIFICATION	通知键	83
    KEYCODE_MUTE	话筒静音键	91
    KEYCODE_VOLUME_MUTE	扬声器静音键	164
    KEYCODE_VOLUME_UP	音量增加键	24
    KEYCODE_VOLUME_DOWN	音量减小键	25
    
     
    控制键
    KEYCODE_ENTER	回车键	66
    KEYCODE_ESCAPE	ESC键	111
    KEYCODE_DPAD_CENTER	导航键 确定键	23
    KEYCODE_DPAD_UP	导航键 向上	19
    KEYCODE_DPAD_DOWN	导航键 向下	20
    KEYCODE_DPAD_LEFT	导航键 向左	21
    KEYCODE_DPAD_RIGHT	导航键 向右	22
    KEYCODE_MOVE_HOME	光标移动到开始键	122
    KEYCODE_MOVE_END	光标移动到末尾键	123
    KEYCODE_PAGE_UP	向上翻页键	92
    KEYCODE_PAGE_DOWN	向下翻页键	93
    KEYCODE_DEL	退格键	67
    KEYCODE_FORWARD_DEL	删除键	112
    KEYCODE_INSERT	插入键	124
    KEYCODE_TAB	Tab61
    KEYCODE_NUM_LOCK	小键盘锁	143
    KEYCODE_CAPS_LOCK	大写锁定键	115
    KEYCODE_BREAK	Break/Pause121
    KEYCODE_SCROLL_LOCK	滚动锁定键	116
    KEYCODE_ZOOM_IN	放大键	168
    KEYCODE_ZOOM_OUT	缩小键	169
    
     
    组合键
    KEYCODE_ALT_LEFT	Alt+Left
    KEYCODE_ALT_RIGHT	Alt+Right
    KEYCODE_CTRL_LEFT	Control+Left
    KEYCODE_CTRL_RIGHT	Control+Right
    KEYCODE_SHIFT_LEFT	Shift+Left
    KEYCODE_SHIFT_RIGHT	Shift+Right
    
     
    基本
    KEYCODE_0	按键'0'	7
    KEYCODE_1	按键'1'	8
    KEYCODE_2	按键'2'	9
    KEYCODE_3	按键'3'	10
    KEYCODE_4	按键'4'	11
    KEYCODE_5	按键'5'	12
    KEYCODE_6	按键'6'	13
    KEYCODE_7	按键'7'	14
    KEYCODE_8	按键'8'	15
    KEYCODE_9	按键'9'	16
    KEYCODE_A	按键'A'	29
    KEYCODE_B	按键'B'	30
    KEYCODE_C	按键'C'	31
    KEYCODE_D	按键'D'	32
    KEYCODE_E	按键'E'	33
    KEYCODE_F	按键'F'	34
    KEYCODE_G	按键'G'	35
    KEYCODE_H	按键'H'	36
    KEYCODE_I	按键'I'	37
    KEYCODE_J	按键'J'	38
    KEYCODE_K	按键'K'	39
    KEYCODE_L	按键'L'	40
    KEYCODE_M	按键'M'	41
    KEYCODE_N	按键'N'	42
    KEYCODE_O	按键'O'	43
    KEYCODE_P	按键'P'	44
    KEYCODE_Q	按键'Q'	45
    KEYCODE_R	按键'R'	46
    KEYCODE_S	按键'S'	47
    KEYCODE_T	按键'T'	48
    KEYCODE_U	按键'U'	49
    KEYCODE_V	按键'V'	50
    KEYCODE_W	按键'W'	51
    KEYCODE_X	按键'X'	52
    KEYCODE_Y	按键'Y'	53
    KEYCODE_Z	按键'Z'	54
    
     
    符号
    KEYCODE_PLUS	按键'+'
    KEYCODE_MINUS	按键'-'
    KEYCODE_STAR	按键'*'
    KEYCODE_SLASH	按键'/'
    KEYCODE_EQUALS	按键'='
    KEYCODE_AT	按键'@'
    KEYCODE_POUND	按键'#'
    KEYCODE_APOSTROPHE	按键''' (单引号)
    KEYCODE_BACKSLASH	按键'\'
    KEYCODE_COMMA	按键','
    KEYCODE_PERIOD	按键'.'
    KEYCODE_LEFT_BRACKET	按键'['
    KEYCODE_RIGHT_BRACKET	按键']'
    KEYCODE_SEMICOLON	按键';'
    KEYCODE_GRAVE	按键'`'
    KEYCODE_SPACE	空格键
    
     
    小键盘
    KEYCODE_NUMPAD_0	小键盘按键'0'
    KEYCODE_NUMPAD_1	小键盘按键'1'
    KEYCODE_NUMPAD_2	小键盘按键'2'
    KEYCODE_NUMPAD_3	小键盘按键'3'
    KEYCODE_NUMPAD_4	小键盘按键'4'
    KEYCODE_NUMPAD_5	小键盘按键'5'
    KEYCODE_NUMPAD_6	小键盘按键'6'
    KEYCODE_NUMPAD_7	小键盘按键'7'
    KEYCODE_NUMPAD_8	小键盘按键'8'
    KEYCODE_NUMPAD_9	小键盘按键'9'
    KEYCODE_NUMPAD_ADD	小键盘按键'+'
    KEYCODE_NUMPAD_SUBTRACT	小键盘按键'-'
    KEYCODE_NUMPAD_MULTIPLY	小键盘按键'*'
    KEYCODE_NUMPAD_DIVIDE	小键盘按键'/'
    KEYCODE_NUMPAD_EQUALS	小键盘按键'='
    KEYCODE_NUMPAD_COMMA	小键盘按键','
    KEYCODE_NUMPAD_DOT	小键盘按键'.'
    KEYCODE_NUMPAD_LEFT_PAREN	小键盘按键'('
    KEYCODE_NUMPAD_RIGHT_PAREN	小键盘按键')'
    KEYCODE_NUMPAD_ENTER	小键盘按键回车
    
     
    功能键
    KEYCODE_F1	按键F1
    KEYCODE_F2	按键F2
    KEYCODE_F3	按键F3
    KEYCODE_F4	按键F4
    KEYCODE_F5	按键F5
    KEYCODE_F6	按键F6
    KEYCODE_F7	按键F7
    KEYCODE_F8	按键F8
    KEYCODE_F9	按键F9
    KEYCODE_F10	按键F10
    KEYCODE_F11	按键F11
    KEYCODE_F12	按键F12
    
     
    多媒体键
    KEYCODE_MEDIA_PLAY	多媒体键 播放
    KEYCODE_MEDIA_STOP	多媒体键 停止
    KEYCODE_MEDIA_PAUSE	多媒体键 暂停
    KEYCODE_MEDIA_PLAY_PAUSE	多媒体键 播放/暂停
    KEYCODE_MEDIA_FAST_FORWARD	多媒体键 快进
    KEYCODE_MEDIA_REWIND	多媒体键 快退
    KEYCODE_MEDIA_NEXT	多媒体键 下一首
    KEYCODE_MEDIA_PREVIOUS	多媒体键 上一首
    KEYCODE_MEDIA_CLOSE	多媒体键 关闭
    KEYCODE_MEDIA_EJECT	多媒体键 弹出
    KEYCODE_MEDIA_RECORD	多媒体键 录音
    
     
    手柄按键
    KEYCODE_BUTTON_1	通用游戏手柄按钮#1
    KEYCODE_BUTTON_2	通用游戏手柄按钮 #2
    KEYCODE_BUTTON_3	通用游戏手柄按钮 #3
    KEYCODE_BUTTON_4	通用游戏手柄按钮 #4
    KEYCODE_BUTTON_5	通用游戏手柄按钮 #5
    KEYCODE_BUTTON_6	通用游戏手柄按钮 #6
    KEYCODE_BUTTON_7	通用游戏手柄按钮 #7
    KEYCODE_BUTTON_8	通用游戏手柄按钮 #8
    KEYCODE_BUTTON_9	通用游戏手柄按钮 #9
    KEYCODE_BUTTON_10	通用游戏手柄按钮 #10
    KEYCODE_BUTTON_11	通用游戏手柄按钮 #11
    KEYCODE_BUTTON_12	通用游戏手柄按钮 #12
    KEYCODE_BUTTON_13	通用游戏手柄按钮 #13
    KEYCODE_BUTTON_14	通用游戏手柄按钮 #14
    KEYCODE_BUTTON_15	通用游戏手柄按钮 #15
    KEYCODE_BUTTON_16	通用游戏手柄按钮 #16
    KEYCODE_BUTTON_A	游戏手柄按钮 A
    KEYCODE_BUTTON_B	游戏手柄按钮 B
    KEYCODE_BUTTON_C	游戏手柄按钮 C
    KEYCODE_BUTTON_X	游戏手柄按钮 X
    KEYCODE_BUTTON_Y	游戏手柄按钮 Y
    KEYCODE_BUTTON_Z	游戏手柄按钮 Z
    KEYCODE_BUTTON_L1	游戏手柄按钮 L1
    KEYCODE_BUTTON_L2	游戏手柄按钮 L2
    KEYCODE_BUTTON_R1	游戏手柄按钮 R1
    KEYCODE_BUTTON_R2	游戏手柄按钮 R2
    KEYCODE_BUTTON_MODE	游戏手柄按钮 Mode
    KEYCODE_BUTTON_SELECT	游戏手柄按钮 Select
    KEYCODE_BUTTON_START	游戏手柄按钮 Start
    KEYCODE_BUTTON_THUMBL	Left Thumb Button
    KEYCODE_BUTTON_THUMBR	Right Thumb Button
        
    
    KEYCODE_NUM				按键Number modifier
    KEYCODE_INFO			按键Info
    KEYCODE_APP_SWITCH		按键App switch
    KEYCODE_BOOKMARK		按键Bookmark
    KEYCODE_AVR_INPUT		按键A/V Receiver input
    KEYCODE_AVR_POWER		按键A/V Receiver power
    KEYCODE_CAPTIONS		按键Toggle captions
    KEYCODE_CHANNEL_DOWN	按键Channel down
    KEYCODE_CHANNEL_UP		按键Channel up
    KEYCODE_CLEAR			按键Clear
    KEYCODE_DVR				按键DVR
    KEYCODE_ENVELOPE		按键Envelope special function
    KEYCODE_EXPLORER		按键Explorer special function
    KEYCODE_FORWARD			按键Forward
    KEYCODE_FORWARD_DEL		按键Forward Delete
    KEYCODE_FUNCTION		按键Function modifier
    KEYCODE_GUIDE			按键Guide
    KEYCODE_HEADSETHOOK		按键Headset Hook
    KEYCODE_META_LEFT		按键Left Meta modifier
    KEYCODE_META_RIGHT		按键Right Meta modifier
    KEYCODE_PICTSYMBOLS		按键Picture Symbols modifier
    KEYCODE_PROG_BLUE		按键Blue “programmable”		
    KEYCODE_PROG_GREEN		按键Green “programmable”
    KEYCODE_PROG_RED		按键Red “programmable”
    KEYCODE_PROG_YELLOW		按键Yellow “programmable”
    KEYCODE_SETTINGS		按键Settings
    KEYCODE_SOFT_LEFT		按键Soft Left
    KEYCODE_SOFT_RIGHT		按键Soft Right
    KEYCODE_STB_INPUT		按键Set-top-box input
    KEYCODE_STB_POWER		按键Set-top-box power
    KEYCODE_SWITCH_CHARSET	按键Switch Charset modifier
    KEYCODE_SYM				按键Symbol modifier
    KEYCODE_SYSRQ			按键System Request / Print Screen
    KEYCODE_TV				按键TV
    KEYCODE_TV_INPUT		按键TV input
    KEYCODE_TV_POWER		按键TV power
    KEYCODE_WINDOW			按键Window
    KEYCODE_UNKNOWN			未知按键
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321

    wm

    窗口控制

    usage: wm [subcommand] [options]
           wm size [reset|WxH]
           wm density [reset|DENSITY]
           wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]
    
    wm size: return or override display size.
    
    wm density: override display density.
    
    wm overscan: set overscan area for display.
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    参数说明

    参数说明
    wm size [reset|WxH]得到lcd本身设置的显示分辨率WxH 按width x hight 设置分辨率reset 将分辨率设置为LCD原始分辨率
    wm density [reset|DENSITY]该命令的用法类似于wm size 命令,作用是读取、设置或者重置LCD的density值。density值即LCD的ppi
    wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]该命令用来设置、重置LCD的显示区域。四个参数分别是显示边缘距离LCD左、上、右、下的像素数。

    wm似乎是高通平台才有的命令,对手机分辨率、像素密度、显示区域进行设置的命令。

    wm命令使用方法及LCD显示图标大小不正常时解决办法 http://blog.csdn.net/longxiaowu/article/details/25329677

    dumpsys

    系统信息。

    dumpsys -l 查看dumpsys支持的服务

      SurfaceFlinger
      accessibility
      account
      activity
      alarm
      android.security.keystore
      appops
      appwidget
      assetatlas
      audio
      backup
      battery
      batterypropreg
      batterystats
      bluetooth_manager
      clipboard
      cneservice
      commontime_management
      connectivity
      consumer_ir
      content
      country_detector
      cpuinfo
      dbinfo
      device_policy
      devicestoragemonitor
      diskstats
      display
      display.qservice
      dreams
      drm.drmManager
      dropbox
      entropy
      fm_receiver
      gfxinfo
      hardware
      input
      input_method
      iphonesubinfo
      isms
      listen.service
      location
      lock_settings
      media.audio_flinger
      media.audio_policy
      media.camera
      media.cameraextension
      media.player
      media_router
      meminfo
      mount
      netpolicy
      netstats
      network_management
      nfc
      notification
      package
      permission
      phone
      power
      print
      procstats
      samplingprofiler
      scheduling_policy
      search
      sensorservice
      serial
      servicediscovery
      simphonebook
      statusbar
      telephony.registry
      textservices
      uimode
      updatelock
      usagestats
      usb
      user
      vibrator
      wallpaper
      wifi
      wifip2p
      window
      xperia_power_service
      xperiaappdepinfo
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84

    参数说明

    参数说明
    SurfaceFlinger分析系统图层
    accessibility
    account账号管理
    activity跟Activity相关的组件的状态这个命令支持子命令,通过-h可以看到子参数的列表。
    alarmAlarm的唤醒队列信息查看放到定时队列中的事件
    android.security.keystore
    appops
    appwidget
    assetatlas
    audio
    backup
    battery电池状态
    batterypropreg
    batterystats各应用耗电量信息支持子命令的,执行dumpsys batterystats -h查看参数列表
    bluetooth_manager
    clipboard
    cneservice
    commontime_management
    connectivity
    consumer_ir
    content
    country_detector
    cpuinfo各进程使用CPU信息查看一段时间段内各个进程使用CPU的信息,包括user、kernel区分
    dbinfo各进程使用SQLite数据的信息查看各个进程使用数据库的状况,sql的执行时间等
    device_policy
    devicestoragemonitor磁盘的使用情况
    diskstats磁盘相关信息
    display
    display.qservice
    dreams
    drm.drmManager
    dropbox各进程的dropbox的日志信息dumpsys dropbox [–print|–file] [YYYY-mm-dd] [HH:MM:SS] [tag]
    fm_receiver
    gfxinfo
    hardware
    input
    input_method
    iphonesubinfo
    isms
    listen.service
    location
    lock_settings
    media.audio_flinger
    media.audio_policy
    media.camera
    media.cameraextension
    media.player
    media_router
    meminfo各进程的内存使用状况执行dumpsys meminfo查看的每个进程占用PSS的列表如果后面接pid或者包名就可以查看具体某个进程的内存详细状况执行dumpsys meminfo com.eg.android.AlipayGphone
    mount
    netpolicy
    netstats
    network_management
    nfc
    notification
    package查看安装的信息主要就是获取AndroidManifest.xml里边的信息
    permission
    phone
    power
    print
    procstats
    samplingprofiler
    scheduling_policy
    search
    sensorservice
    serial
    servicediscovery
    simphonebook
    statusbar状态栏相关的信息
    telephony.registry
    textservices
    uimode
    updatelock
    usagestats每个界面启动的时间
    usb
    user
    vibrator
    wallpaper
    wifiWIFI的信息
    wifip2p
    window键盘,窗口和它们的关系
    xperia_power_service
    xperiaappdepinfo

    Android 性能优化 五 性能分析工具dumpsys的使用
    http://blog.csdn.net/androiddevelop/article/details/37689339
    http://blog.csdn.net/aaa111/article/details/53068197?locationNum=4&fps=1
    使用dumpsys查看android系统服务信息
    http://www.360doc.com/content/16/0112/23/426085_527478833.shtml
    Android性能分析工具dumpsys的使用(自己增加一部分在后面)
    http://www.jianshu.com/p/6bd4813b3c60
    Android的dumpsys命令

    dumpstate

    打印系统快照,相当一个时间点的系统信息

    usage: dumpstate [-b soundfile] [-e soundfile] [-o file [-d] [-p] [-z]] [-s] [-q]
      -o: write to file (instead of stdout)
      -d: append date to filename (requires -o)
      -z: gzip output (requires -o)
      -p: capture screenshot to filename.png (requires -o)
      -s: write output to control socket (for init)
      -b: play sound file instead of vibrate, at beginning of job
      -e: play sound file instead of vibrate, at end of job
      -q: disable vibrate
      -B: send broadcast when finished (requires -o and -p)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    dumpstate主要获取信息:
    1,基本信息,如版本信息,内存基本信息,cpu基本信息,硬件信息等
    2,系统log
    3,网络信息,路由信息,网络撇之信息
    4,panic信息
    5,锁的使用信息
    6,进程信息
    7,binder信息
    8,应用程序安装信息
    9,磁盘使用情况
    10,所有activity,services 信息
    11,properties信息 等

    http://blog.csdn.net/zhongnanjun_3/article/details/20461143

    Android dumpstate 工具解析

  • 相关阅读:
    求质数(埃氏筛法)代码
    React的基础用法-创建组件、渲染组件、处理状态和事件
    Node.js的安装
    关于分布式数据库 TiDB与OceanBase 哪家强?
    《Effective C++》条款12
    【计组】IO系统
    基于Eigen的位姿转换
    RabbitMq
    假如,程序员面试的时候说真话
    幸福心理与抗逆力培养的工控系统安全实验课程研究
  • 原文地址:https://blog.csdn.net/Jun_P/article/details/126562843