ADB
常用命令
adb 简介
Android Debug Bridge (ADB) 是 Android 开发工具中用于与设备或 emulator 进行通信的重要桥梁。 它支持设备连接、文件传输、调试操作以及系统信息的获取,是开发者必备的工具。 通过 ADB,开发者可以执行命令操作设备、管理应用、dump 系统状态、录制屏幕、模拟用户输入等,从而实现高效的开发和调试工作。
基本 adb 命令
查看连接的设备adb devices
重启设备adb reboot [recovery|fastboot|bootloader]
将文件从设备复制到电脑adb pull <device_file_path>
将文件从电脑复制到设备adb push <computer_file_path> <device_file_path>
进入shell命令行adb shell
获取root权限adb root
安装应用adb install <apk_path>
进阶 adb 命令
getprop & setprop
adb shell getprop
adb shell setprop <prop> <value>
log capture
live log in screenadb logcat
get a bugreport package
adb bugreport
adb shell bugreport
am (activity management)
用法
usage: am [subcommand] [option] usage: am start [-D] [-W] [-P <FILE>] [--start-profiler <FILE>] [--sampling INTERVAL] [-R COUNT] [-S] [--opengl-trace] [--user <USER_ID> | current] <INTENT> am startservice [--user <USER_ID> | current] <INTENT> am stopservice [--user <USER_ID> | current] <INTENT> am force-stop [--user <USER_ID> | all | current] <PACKAGE> am kill [--user <USER_ID> | all | current] <PACKAGE> am kill-all am broadcast [--user <USER_ID> | all | current] <INTENT> am instrument [-r] [-e <NAME> <VALUE>] [-p <FILE>] [-w] [--user <USER_ID> | current] [--no-window-animation] [--abi <ABI>] <COMPONENT> am profile start [--user <USER_ID> current] [--sampling INTERVAL] <PROCESS> <FILE> am profile stop [--user <USER_ID> current] [<PROCESS>] am dumpheap [--user <USER_ID> current] [-n] <PROCESS> <FILE> am set-debug-app [-w] [--persistent] <PACKAGE> am clear-debug-app am set-watch-heap <PROCESS> <MEM-LIMIT> am clear-watch-heap am monitor [--gdb <port>] am hang [--allow-restart] am restart am idle-maintenance am screen-compat [on|off] <PACKAGE> am package-importance <PACKAGE> am to-uri [INTENT] am to-intent-uri [INTENT] am to-app-uri [INTENT] am switch-user <USER_ID> am start-user <USER_ID> am stop-user [-w] <USER_ID> am stack start <DISPLAY_ID> <INTENT> am stack movetask <TASK_ID> <STACK_ID> [true|false] am stack resize <STACK_ID> <LEFT,TOP,RIGHT,BOTTOM> am stack split <STACK_ID> <v|h> [INTENT] am stack list am stack info <STACK_ID> am task lock <TASK_ID> am task lock stop am task resizeable <TASK_ID> [true|false] am task resize <TASK_ID> <LEFT,TOP,RIGHT,BOTTOM> am get-config am set-inactive [--user <USER_ID>] <PACKAGE> true|false am get-inactive [--user <USER_ID>] <PACKAGE> am send-trim-memory [--user <USER_ID>] <PROCESS> [HIDDEN|RUNNING_MODERATE|BACKGROUND|RUNNING_LOW|MODERATE|RUNNING_CRITICAL|COMPLETE]
Intent 参数
<INTENT> specifications include these flags and arguments: [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>] [-c <CATEGORY> [-c <CATEGORY>] ...] [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...] [--esn <EXTRA_KEY> ...] [--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> ...] [--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>] [--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]] (mutiple extras passed as Integer[]) [--eial <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]] (mutiple extras passed as List<Integer>) [--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]] (mutiple extras passed as Long[]) [--elal <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]] (mutiple extras passed as List<Long>) [--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]] (mutiple extras passed as Float[]) [--efal <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]] (mutiple extras passed as List<Float>) [--esa <EXTRA_KEY> <EXTRA_STRING_VALUE>[,<EXTRA_STRING_VALUE...]] (mutiple extras passed as String[]; to embed a comma into a string, escape it using "\,") [--esal <EXTRA_KEY> <EXTRA_STRING_VALUE>[,<EXTRA_STRING_VALUE...]] (mutiple extras passed as List<String>; to embed a comma into a string, escape it using "\,") [--grant-read-uri-permission] [--grant-write-uri-permission] [--grant-persistable-uri-permission] [--grant-prefix-uri-permission] [--debug-log-resolution] [--exclude-stopped-packages] [--include-stopped-packages] [--activity-brought-to-front] [--activity-clear-top] [--activity-clear-when-task-reset] [--activity-exclude-from-recents] [--activity-launched-from-history] [--activity-multiple-task] [--activity-no-animation] [--activity-no-history] [--activity-no-user-action] [--activity-previous-is-top] [--activity-reorder-to-front] [--activity-reset-task-if-needed] [--activity-single-top] [--activity-clear-task] [--activity-task-on-home] [--receiver-registered-only] [--receiver-replace-pending] [--selector] [<URI> | <PACKAGE> | <COMPONENT>]
pm (package management)
查看应用安装路径pm path <package name>
查看已安装应用包名pm list packages
查看已安装三方应用包名pm list packages -3
安装应用pm install
卸载应用pm uninstall
清除应用缓存pm clear <package name>
当前设备支持的libslist libraries
dumpsys
window
屏幕参数dumpsys window display
activity
获取前台应用dumpsys activity activities | grep mCurrentFocus
surfaceflinger
获取surfaceflinger信息dumpsys surfaceflinger
service
获取服务信息dumpsys service <service name>
battery
获取电池信息dumpsys battery
设置电池电量:dumpsys battery set level <level>
storage
获取存储信息dumpsys storage
package
获取包信息dumpsys package <package name>
netstats
获取网络统计信息dumpsys netstats
录屏与截图
截图保存到电脑adb exec-out screencap -p > screenshot.png
截图保存到设备adb shell screencap -p /sdcard/screenshot.png
录屏adb shell screenrecord /sdcard/screenrecord.mp4
输入
输入文字input text <text>
模拟按键短按input keyevent <keycode>
模拟按键长按input keyevent --longpress <keycode>
屏幕交互
模拟屏幕点击input tap x y
模拟屏幕滑动input swipe x1 y1 x2 y2 duration
模拟屏幕长按一秒input swipe x1 y1 x1 y1 1000
性能分析
查看设备cpu和内存占用情况top
查询各进程内存使用情况procrank
当前内存占用cat /proc/meminfo
查看IOcat /proc/iomem
ANR日志路径/data/anr/
settings
查看设备设置settings list [global|system|secure]
修改设备设置settings put [global|system|secure] <key> <value>