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 screen
adb 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>
当前设备支持的libs
list 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
查看IO
cat /proc/iomem
ANR日志路径
/data/anr/

settings

查看设备设置
settings list [global|system|secure]
修改设备设置
settings put [global|system|secure] <key> <value>