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.exeglobal 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 messageversion                  show version numnetworking: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 allforward --list           list all forward socket connectionsforward [--no-rebind] LOCAL REMOTEforward 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 connectionforward --remove-all     remove all forward socket connectionsppp TTY [PARAMETER...]   run PPP over USBreverse --list           list all reverse socket connections from devicereverse [--no-rebind] REMOTE LOCALreverse 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 connectionreverse --remove-all     remove all reverse socket connections from devicefile transfer:push [--sync] LOCAL... REMOTEcopy local files/directories to device--sync: only push files that are newer on the host than the devicepull [-a] REMOTE... LOCALcopy files/dirs from device-a: preserve file timestamp and modesync [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 copyshell: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 separationemu COMMAND              run emulator console commandapp installation:install [-lrtsdg] [--instant] PACKAGEinstall-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 appuninstall [-k] PACKAGEremove this app package from the device'-k': keep the data and cache directoriesbackup/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 transportlogcat                   show device log (logcat --help for more)security:disable-verity           disable dm-verity checking on userdebug buildsenable-verity            re-enable dm-verity checking on userdebug buildskeygen FILEgenerate adb public/private key; private key stored in FILE,public key stored in FILE.pub (existing files overwritten)scripting:wait-for[-TRANSPORT]-STATEwait for device to be in the given stateState: device, recovery, sideload, or bootloaderTransport: usb, local, or any [default=any]get-state                print offline | bootloader | deviceget-serialno             print <serial-number>get-devpath              print <device-path>remount                  remount partitions read-writereboot [bootloader|recovery|sideload|sideload-auto-reboot]reboot the device; defaults to booting system image butsupports bootloader and recovery too. sideload rebootsinto recovery and automatically starts sideload mode,sideload-auto-reboot is the same but reboots after sideloading.sideload OTAPACKAGE      sideload the given full OTA packageroot                     restart adbd with root permissionsunroot                   restart adbd without root permissionsusb                      restart adb server listening on USBtcpip PORT               restart adb server listening on TCP on PORTinternal debugging:start-server             ensure that there is a server runningkill-server              kill the server if it is runningreconnect                kick connection from host side to force reconnectreconnect device         kick connection from device side to force reconnectreconnect offline        reset offline/unauthorized devices to force reconnectenvironment variables:$ADB_TRACEcomma-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] PACKAGEinstall-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 WIDTHxHEIGHTSet the video size, e.g. "1280x720".  Default is the device's maindisplay resolution (if supported), 1280x720 if not.  For best results,use a size supported by the AVC encoder.
--bit-rate RATESet the video bit rate, in megabits per second.  Default 4Mbps.
--time-limit TIMESet the maximum recording time, in seconds.  Default / maximum is 180.
--rotateRotate the output 90 degrees.
--verboseDisplay interesting information on stdout.
--helpShow 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 threadthreadtime 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 <count>      print only the most recent <count> lines (implies -d)-t '<time>'     print most recent lines since specified time (implies -d)-T <count>      print only the most recent <count> 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 areallowed 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 asUID, UID/PID or /PID. Weighed for quicker pruning if prefixwith ~, otherwise weighed for longevity if unadorned. Allother pruning activity is oldest first. Special case ~!represents an automatic quicker pruning for the noisiestUID as determined by the current statistics.-P '<list> ...' set prune white and ~black list, using same format asprinted 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    InfoW    WarnE    ErrorF    FatalS    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 <tag>' prints only <tag>, '<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-groupspm list permissions [-g] [-f] [-d] [-u] [GROUP]pm list instrumentation [-f] [TARGET-PACKAGE]pm list featurespm list librariespm list userspm path PACKAGEpm dump PACKAGEpm 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>] PATHpm uninstall [-k] PACKAGEpm clear [--user USER_ID] PACKAGEpm enable [--user USER_ID] PACKAGE_OR_COMPONENTpm disable [--user USER_ID] PACKAGE_OR_COMPONENTpm disable-user [--user USER_ID] PACKAGE_OR_COMPONENTpm disable-until-used [--user USER_ID] PACKAGE_OR_COMPONENTpm block [--user USER_ID] PACKAGE_OR_COMPONENTpm unblock [--user USER_ID] PACKAGE_OR_COMPONENTpm grant PACKAGE PERMISSIONpm revoke PACKAGE PERMISSIONpm set-install-location [0/auto] [1/internal] [2/external]pm get-install-locationpm set-permission-enforced PERMISSION [true|false]pm trim-caches DESIRED_FREE_SPACEpm create-user USER_NAMEpm remove-user USER_IDpm get-max-userspm list packages: prints all packages, optionally onlythose 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 onlythose 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; optionallysupply <TARGET-PACKAGE> to list the test packages for a particularapplication.  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 commandschange the enabled state of a given package or component (writtenas "package/class").pm grant, revoke: these commands either grant or revoke permissionsto applications.  Only optional permissions the application hasdeclared can be granted or revoked.pm get-install-location: returns the current install location.0 [auto]: Let system decide the best location1 [internal]: Install on internal device storage2 [external]: Install on external mediapm set-install-location: changes the default install location.NOTE: this is only intended for debugging; using this can causeapplications to break and other undersireable behavior.0 [auto]: Let system decide the best location1 [internal]: Install on internal device storage2 [external]: Install on external mediapm 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 keysettings [--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: trackballjoysticktouchnavigationmousekeyboardgamepadtouchpaddpadstylustouchscreenThe 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 Tab键    61
KEYCODE_NUM_LOCK    小键盘锁    143
KEYCODE_CAPS_LOCK   大写锁定键   115
KEYCODE_BREAK   Break/Pause键    121
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 ButtonKEYCODE_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支持的服务

  SurfaceFlingeraccessibilityaccountactivityalarmandroid.security.keystoreappopsappwidgetassetatlasaudiobackupbatterybatterypropregbatterystatsbluetooth_managerclipboardcneservicecommontime_managementconnectivityconsumer_ircontentcountry_detectorcpuinfodbinfodevice_policydevicestoragemonitordiskstatsdisplaydisplay.qservicedreamsdrm.drmManagerdropboxentropyfm_receivergfxinfohardwareinputinput_methodiphonesubinfoismslisten.servicelocationlock_settingsmedia.audio_flingermedia.audio_policymedia.cameramedia.cameraextensionmedia.playermedia_routermeminfomountnetpolicynetstatsnetwork_managementnfcnotificationpackagepermissionphonepowerprintprocstatssamplingprofilerscheduling_policysearchsensorserviceserialservicediscoverysimphonebookstatusbartelephony.registrytextservicesuimodeupdatelockusagestatsusbuservibratorwallpaperwifiwifip2pwindowxperia_power_servicexperiaappdepinfo

参数说明

参数 说明
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_ADB 调试工具总结相关推荐

  1. 使用 Strace 调试工具

    strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统呼叫及它所接收的系统信息. strace是一个有用的小工具,它可以通过跟踪系统调用来让你知道一个程序在后台所做的事情. ...

  2. Linux下gdb调试工具的使用

    gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具. gdb主要完成四个方面的功能:(1).启动你的程序,可以按照你的自定义的要求随心所欲的运行程序:(2).可让被调试的程序在你所指定的 ...

  3. gdb图形化调试工具总结

    gdb除了命令行方式等的调试之外,还有图形化的调试工具,下面列举一些供参考 1:insight 2: ddd 3: kgdb 4: xxgdb 其它的工具欢迎补充

  4. IE下的优秀js调试工具Companion.JS

    做web开发的朋友都清楚,js程序的调试是相当郁闷的,因为首先这种语言语法比较灵活,它是一种弱类型的脚本语言,很多错误是无法控制的,这些不谈,最痛苦的是没有什么好的调试工具,现在的情况比以前稍好,在M ...

  5. Linux下路由表调试工具traceroute

    在做静态路由表或者路由表分配时,比较直接的调试工具是traceroute,可以跟踪访问一个IP所到达的路由层级,从而知道经过哪些链路. 参考: http://man.linuxde.net/trace ...

  6. 开源多年后,Facebook这个调试工具,再登Github热门榜

    开源最前线(ID:OpenSourceTop) 猿妹综合整理 链接:https://github.com/facebook/flipper 让许多工程师合作开发大型应用大多会面临一个挑战,通常没有一个 ...

  7. 06Chrome调试工具

    1.打开调试工具 打开Chrome浏览器,按下F12键或右击页面空白处->检查. 2.使用调试工具 Ctrl+滚轮可以放大开发者工具代码大小: 左边是HTML元素结构,右边是CSS样式: 右边C ...

  8. python 自己写个调试工具

    python 自己写个调试工具 建议直接使用logging模块 代码 # -*- coding:utf-8 -*- import time import sysdef get_now_time():& ...

  9. tensorflow 代码调试工具tfdbg的用法

    tensorflow 代码调试工具tfdbg的用法 在windows10下安装 使用tfdbg前确定安装好了tensorflow和pyrendline 终端输入 pip install pyreadl ...

最新文章

  1. python使用matplotlib可视化、移除可视化图像X轴坐标轴的刻度线和标签( remove the default axis ticks and labels of x axis)
  2. webClient 利用代理连接Rss资源
  3. linux netlink 编程示例(二)应用层
  4. x_html语言名词解释,第2章++XHTML标记语言(97页)-原创力文档
  5. linux如何判断光盘是否挂载,LInux下如何挂载光盘找rpm包的方法步骤
  6. 4-希尔排序C实现(递增递减的简单转换)
  7. IEnumerator,IEnumerable,IEnumerableT
  8. 数据库实验二 SQL语言
  9. 用于 Keras 用户使用的 TensorFlow.js layers API
  10. php使用邮箱发送验证码
  11. Android RoboGuice开源框架、Butter Knife开源框架浅析
  12. 一纸书来只为墙,让他三尺又何妨?长城万里今犹在,不见当年秦始皇。
  13. 这款游戏玩法是Low了点,但赚的却是实打实的EOS。
  14. universal link使用
  15. 微积分知识总览(0)
  16. webpack系列-优化
  17. 【一天一个挨打小技巧】暴力磁力种子磁力链接下载
  18. soap java实现_Java实现SOAP协议
  19. 大数据的核心架构层是哪些?
  20. 【经验总结】Maple看电子书

热门文章

  1. l2逐笔接口如何设定年份和月份参数获取不同时段的数据?
  2. unity技美34——解决unity中烘焙光照,同mesh同uv的模型烘焙光照时多出一张光照贴图的问题
  3. CA6140数控化改装设计(论文+CAD图纸)
  4. decode解码报错UnicodeDecodeError: 'gb2312' codec can't decode byte 0x8f in position 6018: illegal multib
  5. 无居士 无居所 苏轼_如何安装和设置居所家庭安全系统
  6. 世界首富的22种习惯与风格,值得你用心去学习
  7. 脉动计算机没有指令计数器,脉动计数器接近开关脉冲计数信号转RS-485/232采集模块 接近开关脉冲信号测量...
  8. 蓝桥杯试题 算法训练 猴子吃包子C语言
  9. webpack自定义loader--编译.tpl文件
  10. PyQt5 右键单击鼠标代码