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)

查询设备

adb devices

输出格式如下

List of devices attached

serial_number state

指定设备

  • 选择指定设备

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

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

    adb -e
    

安装应用

adb install apk_path

支持参数

参数 说明
-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

常见的安装错误

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_DEXOPT dex优化验证失败
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_ERROR SD卡访问失败
INSTALL_FAILED_INVALID_INSTALL_LOCATION 无效的安装路径
INSTALL_FAILED_MEDIA_UNAVAILABLE SD卡不存在
INSTALL_FAILED_INTERNAL_ERROR 系统问题导致安装失败
DEFAULT 未知错误

卸载应用

adb uninstall packagename

支持参数

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

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

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

端口转发

adb forward tcp:6100 local:logd 

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

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

推送文件

adb push local remote

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

下载文件

adb pull remote local

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

启动和停止adb服务

adb start-server 启动adb服务
adb kill-server  关闭adb服务

发出shell命令

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

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

获取root权限

adb root

重新挂载分区

adb remount

屏幕截图

截取当前屏幕画面

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.

参数说明

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

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

示例

screencap filename

屏幕截图

录制屏幕内容

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

参数说明

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

示例

screenshot -s /sdcard/screen.png

录制屏幕

录制屏幕内容

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.

参数说明

命令 说明
–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"

使用参数

参数 描述
-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
    
  • -b
    加载一个可使用的日志缓冲区提供查看,默认值是main

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

    在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

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
    
    • 获取应用内存信息

      adb shell dumpsys meminfo <package_name>
      

      名词说明

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

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

    adb shell dmesg
    
  • 设置settings数据库

    adb shell settings
    
  • 控制系统属性

    adb shell setprop
    adb shell getprop
    
  • 输入事件

    adb shell input
    
    • 输入按键事件

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

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

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

      adb shell input text str
      
  • 窗口管理

    adb shell wm
    
  • 进程信息

    adb shell ps
    
  • cup占用情况

    adb shell top
    

    常用参数说明

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

      top -m 10 -s cpu
      
  • busybox

    adb shell busybox
    

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>]

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

start

启动一个activity

adb shell am start -n packagename/packagename.activityname

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

startservice

启动一个系统服务

adb shell am startservice -n packagename/packagename.servicename

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
命令 说明
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

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)

参数说明

命令 说明
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 触摸板
dpad DPAD
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			未知按键

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.

参数说明

参数 说明
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

参数说明

参数 说明
SurfaceFlinger 分析系统图层
accessibility
account 账号管理
activity 跟Activity相关的组件的状态这个命令支持子命令,通过-h可以看到子参数的列表。
alarm Alarm的唤醒队列信息查看放到定时队列中的事件
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
wifi WIFI的信息
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)

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 工具解析

你可能感兴趣的:(Android开发,android,adb)