ADB命令简介

我们默认本文读者已经详细掌握了自己所使用系统的Terminal的使用方法,并对Linux系统的文件系统及基本命令有了初步的了解,同时应具备一定的英语水平,否则请转而寻求可信来源的图形化工具的帮助。

# 查询设备

adb devices
使用此命令以列出所有当前连接至此计算机的Android设备和此电脑上的Android模拟器,您可以添加-l参数以显示设备的详细信息。第一列显示的是设备的序列号。

# 将命令发送至特定设备

如果您的计算机上连接了多个Android设备或模拟器,您需要在发送命令时使用-s参数指定目标设备,否则会抛出错误。在-s参数后加上目标设备的序列号。

# 安装应用

install会将计算机上的应用安装包安装至Android设备或模拟器上,例如,以下命令将会安装当前路径下的demo.apk文件。
adb install ./demo.apk

# 将文件复制到设备/从设备复制文件

您可以使用pullpush命令将文件复制到设备或从设备复制文件。
例如,想要将手机中的照片拷贝至计算机,可以使用如下命令,他会将照片存储在当前路径下。 adb pull /sdcard/DCIM/Camera ./ 欲将计算机当前路径下的photo.jpg复制至设备的SD卡中,可以使用以下命令。
adb push ./photo.jpg /sdcard

# 发出Shell命令

您可以使用shell命令通过adb发出设备命令,也可以启动交互式shell。要发出单个命令,请使用shell命令,如下所示:
adb shell echo 'Hello,Android!'

要在设备上启动交互式shell,请使用shell命令,如下所示:
adb shell

对于Android/Linux Shell的使用介绍已偏离本文主题,请自行学习Linux系统中Shell的相关命令。

# 调用 Activity 管理器 (am)

adb shell中,您可以使用 Activity 管理器 (am) 工具发出命令以执行各种系统操作,如启动Activity、强行停止进程、广播 intent、修改设备屏幕属性等。

命令 说明
start intent 启动由intent指定的 Activity。
startservice intent 启动由intent指定的 Service。
force-stop package 强行停止与 package(应用的软件包名称)关联的所有进程。
kill-all 终止所有后台进程。
broadcast intent 发出广播 intent。
display-size widthxheight 替换设备显示尺寸。
display-density dpi 替换设备显示密度。

# 调用软件包管理器

在 adb shell 中,您可以使用软件包管理器 (pm) 工具发出命令,以对设备上安装的应用软件包执行操作和查询。

命令 说明
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 users 输出系统中的所有用户。
path package 输出给定 package 的 APK 的路径。
install [options] path 将软件包(通过 path 指定)安装到系统。

选项如下:

  • -r:重新安装现有应用,保留其数据。
  • -i installer_package_name:指定安装程序软件包名称。
  • --install-location location:使用以下某个值来设置安装位置:
    • 0:使用默认安装位置。
    • 1:在内部设备存储上安装。
    • 2:在外部介质上安装。
  • -f:在内部系统内存上安装软件包。
  • -d:允许版本代码降级。
  • -g:授予应用清单中列出的所有权限。
  • --fastdeploy:通过仅更新已更改的 APK 部分来快速更新安装的软件包。
uninstall [options] package 从系统中移除软件包。

选项如下:

  • -k:移除软件包后保留数据和缓存目录。
clear package 删除与软件包关联的所有数据。
enable package_or_component 启用给定的软件包或组件(写为“package/class”)。
disable package_or_component 停用给定的软件包或组件(写为“package/class”)。
grant package_namepermission 向应用授予权限。在搭载 Android 6.0(API 级别 23)及更高版本的设备上,该权限可以是应用清单中声明的任何权限。在搭载 Android 5.1(API 级别 22)及更低版本的设备上,该权限必须是应用定义的可选权限。
revoke package_namepermission 从应用撤消权限。在搭载 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] 指定是否应强制执行给定的权限。

# 截取屏幕截图

screencap命令可以在shell中截取设备显示屏的屏幕截图。例如,以下命令将在命令行中截取屏幕截图并保存在/sdcard下。
adb shell screencap /sdcard/screen.png

# 录制视频

screenrecord命令可以在shell中录制设备显示屏。(需要Android 4.4或更高)例如,以下命令将在命令行中录制屏幕并保存在/sdcard下。
adb shell screenrecord /sdcard/demo.mp4
按 Ctrl + C 键(在 Mac 上,按 Command + C 键)停止屏幕录制;否则,到三分钟或 --time-limit 设置的时间限制时,录制将自动停止。

选项 说明
--size widthxheight 设置视频大小:1280x720。默认值为设备的本机显示屏分辨率(如果支持);如果不支持,则为 1280x720。
--bit-rate rate 设置视频的视频比特率(以 MB/秒为单位)。默认值为 4Mbps。您可以增加比特率以提升视频品质,但这么做会导致视频文件变大。
--time-limit time 设置最大录制时长(以秒为单位)。默认值和最大值均为 180(3 分钟)。
--verbose 在命令行屏幕显示日志信息。如果您不设置此选项,则该实用程序在运行时不会显示任何信息。


Portions of this page are modifications based on work created and shared by the Android Open Source Project (opens new window) and used according to terms described in the Creative Commons 2.5 Attribution License (opens new window).

最后更新: 8/9/2021, 1:08:31 PM