adb 常用指令详解

所有 adb 客户端均使用端口 5037 与 adb服务器通信
设置->关于手机->版本号点击7次->返回上一级,进入开发者选项->打开USB调试

显示已连接的模拟器/设备的列表

1
2
3
adb devices
List of devices attached
serial_number state
1
adb -s serial_number command

将 Android 应用(使用 APK 文件的完整路径表示)推送到模拟器/设备。

1
adb install path_to_apk

从模拟器/设备实例将指定文件复制到开发计算机。

1
adb pull remote local

从开发计算机将指定文件复制到模拟器/设备实例。

1
adb push local remote

将 dumpsys、dumpstate 和 logcat 数据输出到屏幕,以用于报告错误。

1
adb bugreport

阻止执行,直至设备处于在线状态,即直至此实例状态为 device。

1
adb wait-for-device

检查 adb 服务器进程是否在运行,如果未运行则启动它。

1
adb start-server

终止 adb 服务器进程。

1
adb kill-server

启动 intent 指定的 Activity。

1
adb shell am start -a android.intent.action.VIEW

启动 intent 指定的 Service。

1
adb shell am startservice [options] intent

强行停止与 package(应用的包名称)关联的所有应用。

1
adb shell am force-stop package

终止与 package(应用的包名称)关联的所有进程。

1
adb shell am kill [options] package

终止所有后台进程。

1
adb shell am kill-all

发出广播 intent

1
adb shell am broadcast [options] intent

start [options] intent: 启动intent指定的Service。
options包括:
-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。
options包括:
–user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。

force-stop package 强行停止与 package(应用的包名称)关联的所有应用。
kill [options] package 终止与 package(应用的包名称)关联的所有进程。此命令仅终止可安全终止且不会影响用户体验的进程。
options包括:
–user user_id | all | current:指定将终止其进程的用户;如果未指定,则终止所有用户的进程。

kill-all 终止所有后台进程。

broadcast [options] intent: 发出广播intent。
options包括:
[–user user_id | all | current]:指定要发送到的用户;如果未指定,则发送到所有用户。

instrument [options] component: 使用 Instrumentation 实例启动监控。通常,目标 component 是表单 test_package/runner_class。
options包括:
-r:输出原始结果(否则对 report_key_streamresult 进行解码)。与 [-e perf true] 结合使用以生成性能测量的原始输出。
-e name value:将参数 name 设为 value。对于测试运行器,通用表单为 -e testrunner_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。
options包括:
–user [user_id|current]:提供进程名称时,指定要转储的进程用户;如果未指定,则使用当前用户。
-n:转储原生堆,而非托管堆。

set-debug-app [options] package: 将应用 package 设为调试。
options包括:
-w:应用启动时等待调试程序。
–persistent:保留此值。

clear-debug-app: 使用 set-debug-app 清除以前针对调试用途设置的软件包。
monitor [options] 启动对崩溃或 ANR 的监控。
options包括:
–gdb:在崩溃/ANR 时在给定端口上启动 gdbserv。
screen-compat {on|off} package 控制 package 的屏幕兼容性模式。
display-size [reset|widthxheight] 替换模拟器/设备显示尺寸。此命令对于在不同尺寸的屏幕上测试您的应用非常有用,它支持使用大屏设备模仿小屏幕分辨率(反之亦然)。
display-density dpi替换模拟器/设备显示密度。此命令对于在不同密度的屏幕上测试您的应用非常有用,它支持使用低密度屏幕在高密度环境环境上进行测试(反之亦然)。
to-uri intent将给定的 intent 规范以 URI 的形式输出。
to-intent-uri intent 将给定的 intent 规范以 intent:URI 的形式输出。

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;如果参数包含一个“/”(正斜杠),则此工具假定参数是一个组件名称;否则,此工具假定参数是一个软件包名称。

1
adb shell pm uninstall com.example.MyApp

list packages [options] filter: 输出所有软件包,或者,仅输出包名称包含 filter 中的文本的软件包。
options:
-f:查看它们的关联文件。
-d:进行过滤以仅显示已停用的软件包。
-e:进行过滤以仅显示已启用的软件包。
-s:进行过滤以仅显示系统软件包。
-3:进行过滤以仅显示第三方软件包。
-i:查看软件包的安装程序。
-u:也包括卸载的软件包。
–user user_id:要查询的用户空间。

list permission-groups 输出所有已知的权限组。
list permissions [options] group 输出所有已知权限,或者,仅输出 group 中的权限。
options:
-g:按组加以组织。
-f:输出所有信息。
-s:简短摘要。
-d:仅列出危险权限。
-u:仅列出用户将看到的权限。

list instrumentation [options] 列出所有测试软件包。
options:
-f:列出用于测试软件包的 APK 文件。
target_package:列出仅用于此应用的测试软件包。
list features 输出系统的所有功能。
list libraries 输出当前设备支持的所有库。
list users 输出系统上的所有用户。
path package 输出给定 package 的 APK 的路径。

install [options] path 将软件包(通过 path 指定)安装到系统。
options:
-l:安装具有转发锁定功能的软件包。
-r:重新安装现有应用,保留其数据。
-t:允许安装测试 APK。
-i installer_package_name:指定安装程序软件包名称。
-s:在共享的大容量存储(如 sdcard)上安装软件包。
-f:在内部系统内存上安装软件包。
-d:允许版本代码降级。
-g:授予应用清单中列出的所有权限。

uninstall [options] package 从系统中移除软件包。
options:

-k:移除软件包后保留数据和缓存目录。
clear package 删除与软件包关联的所有数据。
enable package_or_component 启用给定软件包或组件(作为“package/class”写入)。
disable package_or_component 停用给定软件包或组件(作为“package/class”写入)。

disable-user [options] package_or_component
options:
–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 输出设备支持的最大用户数。

屏幕截图

1
adb shell screencap /sdcard/screen.png

录制视频

1
adb shell screenrecord /sdcard/demo.mp4

screenrecord 选项
–help 显示命令语法和选项
–size widthxheight 设置视频大小:1280x720。默认值是设备的原生显示分辨率(如果支持),如果不支持,则使用 1280x720。为实现最佳结果,请使用设备的 Advanced Video Coding (AVC) 编码器支持的大小。
–bit-rate rate 设置视频的视频比特率(以兆比特每秒为单位)。默认值为 4Mbps。您可以增加比特率以提升视频质量,但这么做会导致影片文件变得更大。以下示例将录制比特率设为 6Mbps:
screenrecord –bit-rate 6000000 /sdcard/demo.mp4
–time-limit time 设置最大录制时长(以秒为单位)。默认值和最大值均为 180(3 分钟)。
–rotate 将输出旋转 90 度。此功能是实验性的。
–verbose 显示命令行屏幕上的日志信息。如果您不设置此选项,则运行时此实用程序不会显示任何信息。

其他一些 adb shell 命令
dumpsys 将系统数据转储到屏幕。 Dalvik Debug Monitor Server (DDMS) 工具提供了一个集成调试环境,让您用起来更方便。
dumpstate 将状态转储到文件。
logcat [option]… [filter-spec]…启用系统和应用日志记录,并将输出传输到屏幕。
dmesg 将内核调试消息输出到屏幕。
start 启动(重启)模拟器/设备实例。
stop 停止执行模拟器/设备实例。

下表介绍的是 logcat 的命令行选项。

1
2
3
4
5
6
7
8
9
-b <buffer> 加载可供查看的备用日志缓冲区,如 events 或 radio。默认情况下使用 main 缓冲区。请参阅查看备用日志缓冲区。
-c 清除(刷新)整个日志并退出。
-d 将日志转储到屏幕并退出。
-f <filename> 将日志消息输出写入 <filename>。默认值为 stdout
-g 打印指定日志缓冲区的大小并退出。
-n <count> 将已旋转日志的最大数量设置为 <count>。默认值为 4。 需要使用 -r 选项。
-r <kbytes> 每输出 <kbytes> 时旋转日志文件。默认值为 16。需要使用 -f 选项。
-s 将默认过滤器规则设为静默式。
-v <format> 设置日志消息的输出格式。默认值为 brief 格式有关支持的格式列表,请参阅控制日志输出格式。