精华内容
下载资源
问答
  • Android 调试桥
    千次阅读
    2017-01-12 11:33:49

    Android 调试桥 (adb) 是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。该工具作为一个客户端-服务器程序,包括三个组件:

    • 客户端,该组件发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
    • 后台程序,该组件在设备上运行命令。后台程序在每个模拟器或设备实例上作为后台进程运行。
    • 服务器,该组件管理客户端和后台程序之间的通信。服务器在开发计算机上作为后台进程运行。

    您可以在 android_sdk/platform-tools/ 中找到 adb 工具。

    adb 的工作方式


    启动一个 adb 客户端时,此客户端首先检查是否有已运行的 adb 服务器进程。如果没有,它将启动服务器进程。当服务器启动时,它与本地 TCP 端口 5037 绑定,并侦听从 adb 客户端发送的命令—所有 adb 客户端均使用端口 5037 与 adb 服务器通信。

    然后,服务器设置与所有运行的模拟器/设备实例的连接。它通过扫描 5555 到 5585 之间(模拟器/设备使用的范围)的奇数号端口查找模拟器/设备实例。服务器一旦发现 adb 后台程序,它将设置与该端口的连接。请注意,每个模拟器/设备实例将获取一对按顺序排列的端口 — 用于控制台连接的偶数号端口和用于 adb 连接的奇数号端口。例如:

    模拟器 1,控制台:5554
    模拟器 1,adb:5555
    模拟器 2,控制台:5556
    模拟器 2,adb:5557
    以此类推...

    如上所示,在端口 5555 与 adb 连接的模拟器实例与侦听端口 5554 的控制台的实例相同。

    当服务器已设置与所有模拟器实例的连接后,您可以使用 adb 命令访问这些实例。由于服务器管理与模拟器/设备实例的连接,并处理来自多个 adb 客户端的命令,因此,您可以从任意客户端(或从某个脚本)控制任意模拟器/设备实例。

    在您的设备上启用 adb 调试


    要在通过 USB 连接的设备上使用 adb,您必须在设备系统设置中启用 USB debugging(位于 Developer options 下)。

    在运行 Android 4.2 及更高版本的设备上,Developer options 屏幕默认情况下处于隐藏状态。如需将其显示出来,请转到 Settings > About phone 并点按Build number 七次。返回上一屏幕,在底部可以找到 Developer options

    在某些设备上,Developer options 屏幕所在的位置或命名方式可能有所不同。

    现在,您可以将设备与 USB 连接。可以从 android_sdk/platform-tools/ 目录执行 adb devices 来验证设备是否连接。如果已连接,您将看到设备名称以“设备”形式列示。

    :当您连接运行 Android 4.2.2 或更高版本的设备时,系统将显示一个对话框,询问您是否接受允许在这台计算机上调试的 RSA 密钥。这种安全机制可以保护用户设备,因为它可以确保只有在您能够解锁设备并确认对话框的情况下才能执行 USB 调试和其他 ADB 命令。

    如需了解有关通过 USB 连接到设备的详细信息,请参阅在硬件设备上运行应用

    通过 WLAN 连接到设备


    一般情况下,通过 USB 使用 adb。不过,也可以按照下面的说明通过 WLAN 使用它。

    1. 将 Android 设备和 adb 主计算机连接到这两者都可以访问的常用 WLAN 网络。请注意,并非所有访问点均适用;您可能需要使用已正确配置防火墙的访问点以支持 adb 的访问点。

      注:如果您尝试连接到 Android Wear 设备,则通过关闭与其连接的手机的蓝牙强制将它连接到 WLAN。

    2. 使用 USB 电缆将设备连接到主计算机。
    3. 设置目标设备以侦听端口 5555 上的 TCP/IP 连接。
      $ adb tcpip 5555
      
    4. 从目标设备断开 USB 电缆连接。
    5. 查找 Android 设备的 IP 地址。例如,在 Nexus 设备上,您可以通过访问 Settings > About tablet(或 About phone) > Status > IP address 查找 IP 地址。或者,在 Android Wear 设备上,您可以通过访问 Settings > Wi-Fi Settings > Advanced > IP address 查找 IP 地址。
    6. 连接至设备,通过 IP 地址识别此设备。
      $ adb connect device_ip_address
      
    7. 请确认您的主计算机已连接至目标设备:
      $ adb devices
      List of devices attached
      device_ip_address:5555 device
      

    现在,您可以开始操作了!

    如果 adb 连接丢失:

    1. 请确保您的主机仍与您的 Android 设备连接到同一个 WLAN 网络。
    2. 通过再次执行 adb connect 步骤重新连接。
    3. 如果无法连接,则重置 adb 主机:
      adb kill-server
      

      然后,从头开始操作。

    查询设备


    在发出 adb 命令之前,知道哪些模拟器/设备实例已连接到 adb 服务器会很有帮助。您可以使用 devices 命令生成已连接的模拟器/设备的列表:

    adb devices

    在响应时,adb 针对每个实例输出此状态信息:

    • 序列号 — 一个由 adb 创建的字符串,用于通过其控制台端口号唯一标识模拟器/设备实例。序列号的格式为 type-console-port。下面是一个序列号示例:emulator-5554
    • 状态 — 实例的连接状态可为下列状态之一:
      • offline — 实例未连接到 adb 或不响应。
      • device — 实例现在已连接到 adb 服务器。请注意,此状态并不表示 Android 系统已完全启动且可以运行,因为在此实例连接到 adb 时系统仍在启动。不过,在启动后,这将是模拟器/设备实例的正常运行状态。
      • no device — 未连接模拟器/设备。

    输出的格式类似如下:

    List of devices attached
    serial_number state

    以下示例向您展示了 devices 命令及其输出:

    adb devices
    List of devices attached
    emulator-5554  device
    emulator-5556  device
    emulator-5558  device

    将命令发送至特定设备


    如果多个模拟器/设备实例正在运行,在发出 adb 命令时您必须指定一个目标实例。为此,请在命令中使用 -s 选项。以下是 -s 选项的用法:

    adb -s serial_number command 

    如上所示,您使用由 adb 分配的序列号为命令指定目标实例。您可使用 devices 命令获取正在运行的模拟器/设备实例的序列号。例如:

    adb -s emulator-5556 install helloWorld.apk

    注意,如果在多个设备可用时您未指定目标模拟器/设备实例就发出命令,那么 adb 将生成一个错误。

    如果您有多个设备可用(硬件或模拟设备),但只有一个设备是模拟器,则使用 -e 选项将命令发送至该模拟器。同样,如果有多个设备,但只连接了一个硬件设备,则使用 -d 选项将命令发送至该硬件设备。

    安装应用


    您可以使用 adb 从开发计算机复制应用,并将其安装到模拟器/设备实例上。为此,请使用 install 命令。使用此命令,您必须指定您要安装的 APK 文件的路径:

    adb install path_to_apk

    如需有关如何创建可在模拟器/设备实例上安装的 APK 文件的详细信息,请参阅构建和运行您的应用

    请注意,如果使用 Android Studio,则无需直接使用 adb(或 aapt)在模拟器/设备上安装您的应用。而是由 Android Studio 为您处理应用的打包和安装。

    设置端口转发


    您可以使用 forward 命令设置任意端口转发 — 将对特定主机端口的请求转发到模拟器/设备实例上的其他端口。下面向您介绍如何设置主机端口 6100 到模拟器/设备端口 7100 的转发:

    adb forward tcp:6100 tcp:7100

    您也可以使用 adb 设置传输到指定的抽象 UNIX 网域套接字的转发,如下所示:

    adb forward tcp:6100 local:logd 

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


    您可以使用 adb 命令 pull 和 push 将文件复制到模拟器/设备实例或从其中复制文件。与 install 命令不同(其仅将 APK 文件复制到特定位置),pull和 push 命令允许您将任意目录和文件复制到模拟器/设备实例中的任意位置。

    模拟器或设备复制文件或目录(及其子目录),请使用

    adb pull remote local

    要将文件文件或目录(及其子目录)复制模拟器或设备,请使用

    adb push local remote

    在上述命令中,local 和 remote 指的是开发计算机(本地)和模拟器/设备实例(远程)上目标文件/目录的路径。例如:

    adb push foo.txt /sdcard/foo.txt

    停止 adb 服务器


    在某些情况下,您可能需要终止 adb 服务器进程,然后重启它以解决问题(例如,如果 adb 不响应命令)。

    要停止 adb 服务器,请使用 adb kill-server 命令。然后,您可以通过发出任意其他 adb 命令重启服务器。

    adb 命令参考


    您可以在开发计算机上从命令行发出 adb 命令,或通过脚本发出。用法如下:

    adb [-d|-e|-s serial_number] command
    

    如果只有一个模拟器在运行或只连接了一个设备,则默认情况下将 adb 命令发送至该设备。如果有多个模拟器在运行和/或连接了多个设备,您需要使用-d-e 或 -s 选项指定应向其发送命令的目标设备。

    下表列出了所有支持的 adb 命令并解释其含义和用法。

    表 1. 可用的 adb 命令

    类别 命令 说明 注释
    目标设备 -d 将 adb 命令发送至唯一连接的 USB 设备。 如果连接了多个 USB 设备,将返回错误。
    -e 将 adb 命令发送至唯一运行的模拟器实例。 如果有多个模拟器实例在运行,将返回错误。
    -s serial_number 将 adb 命令发送至以其 adb 分配的序列号命名的特定模拟器/设备实例(如“emulator-5556”)。 请参阅将命令发送至特定模拟器/设备实例
    常规 devices 输出所有连接的模拟器/设备实例的列表。 如需了解详细信息,请参阅查询模拟器/设备实例
    help 输出支持的 adb 命令的列表。  
    version 输出 adb 版本号。  
    调试 logcat [option] [filter-specs] 将日志数据输出到屏幕。  
    bugreport 将 dumpsysdumpstate 和 logcat数据输出到屏幕,以用于报告错误。  
    jdwp 输出给定设备上可用的 JDWP 进程的列表。 您可以使用 forward jdwp:pid 端口转发规范以连接到特定的 JDWP 进程。例如:
    adb forward tcp:8000 jdwp:472
    jdb -attach localhost:8000
    数据 install path_to_apk 将 Android 应用(使用 APK 文件的完整路径表示)推送到模拟器/设备。  
    pull remote local 从模拟器/设备实例将指定文件复制到开发计算机。  
    push local remote 从开发计算机将指定文件复制到模拟器/设备实例。  
    端口和网络连接 forward local remote 将来自指定本地端口的套接字连接转发到模拟器/设备实例上的指定远程端口。 端口规范可使用以下架构:
    • tcp:port_number
    • local:unix_domain_socket_name
    • dev:character_device_name
    • jdwp:pid
    ppp tty [parm]... 通过 USB 运行 PPP。
    • tty — 用于 PPP 流的 tty。例如,dev:/dev/omap_csmi_ttyl
    • [parm]... — 零个或多个 PPP/PPPD 选项,如defaultroutelocalnotty等。

    请注意,不得自动启动 PPP 连接。

     
    脚本 get-serialno 输出 adb 实例序列号字符串。 如需了解详细信息,请参阅查询模拟器/设备实例
    get-state 输出模拟器/设备实例的 adb 状态。
    wait-for-device 阻止执行,直至设备处于在线状态,即直至此实例状态为 device 您可以将此命令附加到其他 adb 命令,在此情况下,adb 在发出其他命令前将处于等待状态,直至模拟器/设备实例已连接。下面是一个示例:
    adb wait-for-device shell getprop
    请注意,此命令不会使 adb 等待整个系统已完全启动。因此,您不应将其追加到需要系统完全启动的其他命令。例如,install 需要使用 Android 软件包管理器,其仅在系统完全启动后才可用。如下命令
    adb wait-for-device install app.apk
    在模拟器或设备实例连接到 adb 服务器时立即发出 install 命令,但 Android 系统还未完全启动,因此,它将引发错误。
    服务器 start-server 检查 adb 服务器进程是否在运行,如果未运行则启动它。  
    kill-server 终止 adb 服务器进程。  
    Shell shell 在目标模拟器/设备实例中启动远程 shell。 如需了解详细信息,请参阅发出 shell 命令
    shell shell_command 在目标模拟器/设备实例中发出 shell 命令,然后退出远程 shell。

    发出 shell 命令


    您可以使用 shell 命令通过 adb 发出设备命令,可以进入或不进入模拟器/设备实例上的 adb 远程 shell。要在不进入远程 shell 的情况下发出一个命令,请使用如下 shell 命令:

    adb [-d|-e|-s serial_number] shell shell_command

    或者,使用如下命令进入模拟器/设备实例上的远程 shell:

    adb [-d|-e|-s serial_number] shell

    当您准备退出远程 shell 时,按 Control + D 或输入 exit

    shell 命令二进制文件存储在模拟器或设备的文件系统中,其路径为 /system/bin/

    调用 Activity Manager (am)

    在 adb shell 中,您可以使用 Activity Manager (am) 工具发出命令以执行各种系统操作,如启动 Activity、强行停止进程、广播 intent、修改设备屏幕属性及其他操作。在 shell 中,此语法为:

    am command
    

    您也可以直接从 adb 发出 Activity Manager 命令,无需进入远程 shell。例如:

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

    表 2. 可用的 Activity Manager 命令

    命令 说明
    start [optionsintent 启动 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 [optionsintent 启动 intent 指定的 Service

    请参阅 intent 参数的规范

    选项包括:

    • --user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。
    force-stop package 强行停止与 package(应用的包名称)关联的所有应用。
    kill [optionspackage 终止与 package(应用的包名称)关联的所有进程。此命令仅终止可安全终止且不会影响用户体验的进程。

    选项包括:

    • --user user_id | all | current:指定将终止其进程的用户;如果未指定,则终止所有用户的进程。
    kill-all 终止所有后台进程。
    broadcast [optionsintent 发出广播 intent。

    请参阅 intent 参数的规范

    选项包括:

    • [--user user_id | all | current]:指定要发送到的用户;如果未指定,则发送到所有用户。
    instrument [optionscomponent 使用 Instrumentation 实例启动监控。通常,目标 component 是表单 test_package/runner_class

    选项包括:

    • -r:输出原始结果(否则对 report_key_streamresult 进行解码)。与 [-e perf true] 结合使用以生成性能测量的原始输出。
    • -e name value:将参数 name 设为 value。对于测试运行器,通用表单为 -e testrunner_flagvalue[,value...]
    • -p file:将分析数据写入 file
    • -w:先等待仪器完成,然后再返回。测试运行器需要使用此选项。
    • --no-window-animation:运行时关闭窗口动画。
    • --user user_id | current:指定仪器在哪个用户中运行;如果未指定,则在当前用户中运行。
    profile start process file 启动 process 的分析器,将结果写入 file
    profile stop process 停止 process 的分析器。
    dumpheap [optionsprocess file 转储 process 的堆,写入 file

    选项包括:

    • --user [user_id|current]:提供进程名称时,指定要转储的进程用户;如果未指定,则使用当前用户。
    • -n:转储原生堆,而非托管堆。
    set-debug-app [optionspackage 将应用 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 参数的规范

    调用软件包管理器 (pm)

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

    pm command
    

    您也可以直接从 adb 发出软件包管理器命令,无需进入远程 shell。例如:

    adb shell pm uninstall com.example.MyApp
    

    表 3. 可用的软件包管理器命令。

    命令 说明
    list packages [optionsfilter 输出所有软件包,或者,仅输出包名称包含 filter 中的文本的软件包。

    选项:

    • -f:查看它们的关联文件。
    • -d:进行过滤以仅显示已停用的软件包。
    • -e:进行过滤以仅显示已启用的软件包。
    • -s:进行过滤以仅显示系统软件包。
    • -3:进行过滤以仅显示第三方软件包。
    • -i:查看软件包的安装程序。
    • -u:也包括卸载的软件包。
    • --user user_id:要查询的用户空间。
    list permission-groups 输出所有已知的权限组。
    list permissions [optionsgroup 输出所有已知权限,或者,仅输出 group 中的权限。

    选项:

    • -g:按组加以组织。
    • -f:输出所有信息。
    • -s:简短摘要。
    • -d:仅列出危险权限。
    • -u:仅列出用户将看到的权限。
    list instrumentation [options] 列出所有测试软件包。

    选项:

    • -f:列出用于测试软件包的 APK 文件。
    • target_package:列出仅用于此应用的测试软件包。
    list features 输出系统的所有功能。
    list libraries 输出当前设备支持的所有库。
    list users 输出系统上的所有用户。
    path package 输出给定 package 的 APK 的路径。
    install [optionspath 将软件包(通过 path 指定)安装到系统。

    选项:

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

    选项:

    • -k:移除软件包后保留数据和缓存目录。
    clear package 删除与软件包关联的所有数据。
    enable package_or_component 启用给定软件包或组件(作为“package/class”写入)。
    disable package_or_component 停用给定软件包或组件(作为“package/class”写入)。
    disable-user [optionspackage_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 输出设备支持的最大用户数。

    进行屏幕截图

    screencap 命令是一个用于对设备显示屏进行屏幕截图的 shell 实用程序。在 shell 中,此语法为:

    screencap filename
    

    要从命令行使用 screencap,请输入以下命令:

    $ adb shell screencap /sdcard/screen.png

    以下屏幕截图会话示例向您展示使用 adb shell 捕获屏幕截图,并使用 pull 命令从设备下载此文件:

    $ adb shell
    shell@ $ screencap /sdcard/screen.png
    shell@ $ exit
    $ adb pull /sdcard/screen.png

    录制视频

    screenrecord 命令是一个用于录制设备(运行 Android 4.4(API 级别 19)及更高版本)显示屏的 shell 实用程序。此实用程序将屏幕 Activity 录制到 MPEG-4 文件。

    :音频不与视频文件一起录制。

    开发者可以使用此文件创建宣传视频或培训视频。在 shell 中,此语法为:

    screenrecord [options] filename
    

    要从命令行使用 screenrecord,请输入以下命令:

    $ adb shell screenrecord /sdcard/demo.mp4

    按 Control + C 停止屏幕录制,否则,到三分钟或 --time-limit 设置的时间限制时,录制将自动停止。

    要开始录制设备屏幕,请运行 screenrecord 命令以录制视频。然后,运行 pull 命令从设备将此视频下载到主计算机。下面是一个录制会话示例:

    $ adb shell
    shell@ $ screenrecord --verbose /sdcard/demo.mp4
    (press Control + C to stop)
    shell@ $ exit
    $ adb pull /sdcard/demo.mp4

    screenrecord 实用程序可以任何支持的分辨率和所需的比特率进行录制,同时保留设备显示屏的纵横比。默认情况下,此实用程序以原生显示分辨率和屏幕方向进行录制,最大时长为三分钟。

    下面是 screenrecord 实用程序的一些已知限制,您在使用时应注意:

    • 某些设备可能无法以它们的原生显示分辨率进行录制。如果在录制屏幕时出现问题,请尝试使用较低的屏幕分辨率。
    • 不支持在录制时旋转屏幕。如果在录制期间屏幕旋转了,则部分屏幕的录制将被切断。

    表 4. 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 显示命令行屏幕上的日志信息。如果您不设置此选项,则运行时此实用程序不会显示任何信息。

    读取应用的 ART 配置文件

    从 Android 7.0(API 级别 24)开始,Android Runtime (ART) 会收集已安装应用的执行配置文件,其可用于优化应用性能。您可能想要检查收集的配置文件,以了解在应用启动期间,系统决定频繁执行哪些方法和使用哪些类。

    要生成配置文件信息的文本表单,请使用以下命令:

    $ adb shell cmd package dump-profiles package
    

    要检索生成的文件,请使用:

    $ adb pull /data/misc/profman/package.txt
    

    其他 shell 命令

    如需所有可用 shell 程序的列表,请使用以下命令:

    adb shell ls /system/bin

    大多数命令都提供帮助说明。

    表 5 列出了一些比较常用的 adb shell 命令。

    表 5. 其他一些 adb shell 命令

    Shell 命令 说明 注释
    dumpsys 将系统数据转储到屏幕。 Dalvik Debug Monitor Server (DDMS) 工具提供了一个集成调试环境,让您用起来更方便。
    dumpstate 将状态转储到文件。
    logcat [option]... [filter-spec]... 启用系统和应用日志记录,并将输出传输到屏幕。
    dmesg 将内核调试消息输出到屏幕。
    start 启动(重启)模拟器/设备实例。  
    stop 停止执行模拟器/设备实例。  
    更多相关内容
  • 2020-09-04从谷歌官网下载的platform-tools_r30.0.4-windows,然后从里边提取出了adb 1.0.41
  • adb工具即Android Debug Bridge(安卓调试桥) tools..
  • adb工具即Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互。在某些特殊的情况下进入不了系统,adb就派上用场啦! adb工具我觉得很重要,比如说你的手机不...
  • adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll三个文件
  • Android调试桥

    2016-01-21 15:41:06
    Android调试桥(adb)是一个开发工具,帮助安卓设备和个人计算机之间的通信。这种通信大多是在USB电缆下进行,但是也支持Wi-Fi连接。adb还可被用来与电脑上运行的安卓模拟器交流通信。 adb 对于安卓开发来说就像一...
  • Android 调试桥 (adb)

    千次阅读 2021-03-04 16:49:36
    一、 adb连接手机 (1)Android 调试桥 (adb) —— 了解

    (1)Android 调试桥 (adb) —— 了解

       adb全称(Android Debug Bridge),它是一个通用命令行工具,它可以做为Android与PC端连接的一个桥梁,所以adb又称为Android调试桥,用户可以通过adb在电脑上对Android设备进行全面操作,比如安装和调试应用,操作文件的传输等。

    运行架构

    • adb client(客户端):client实际上就是shell控制台,通过Client发送命令给server。发送命令时,首先检测PC上有没有启动Server,如果没有Server,则自动启动一个Server,然后将命令发送到Server,并不关心命令发送过去以后会怎样。

    • adb server(服务器):server是运行在主机上的一个后台进程,作用是检测USB端口何时连接或者移除设备,server还将adb client的请求通过USB或者TCP的发送发送到adbd上。

    • adb demon(守护进程):运行在Android设备上的一个进程,作用是通过USB或者TCP连接到adb server,并且为运行在主机上的adb client提供一些服务。
      在这里插入图片描述

    (2)Android 调试桥 (adb) —— 下载adb并使用

       如果是本身开发安卓的程序师,下载Android SDK的是时候里面会自带adb工具,但是如果只是单纯的想试试adb,可以直接下载 adb下载链接

       下载之后解压就得到这样的目录结构,我们需要用到的就是其中的adb.exe
    在这里插入图片描述
    要么这里直接用cmd操作,为了方便也可以设置一个系统环境变量,这里就先直接使用了,随便输入一个adb devices的命令看看咸淡
    在这里插入图片描述
    这里可以看出来adb是可以用了,当启动 adb 客户端时,该客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它会启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令 - 所有 adb 客户端均通过端口 5037 与 adb 服务器通信

    (3)Android 调试桥 (adb) —— 启用 adb 调试

       如要在通过 USB 连接的设备上使用 adb,您必须在设备的系统设置中启用 USB 调试(位于开发者选项下)

       在搭载 Android 4.2 及更高版本的设备上,“开发者选项”屏幕默认情况下处于隐藏状态。如需显示开发者选项,请依次转到设置 > 关于手机,然后点按 build 号七次。返回上一屏幕,在底部可以找到开发者选项

       在某些设备上,“开发者选项”屏幕所在的位置或名称可能有所不同。

    现在,通过 USB 连接设备。再通过执行 adb devices 验证设备是否已连接。

    可以看到,当我用usb数据线连接之后再使用命令,设备信息马上就显示了出来,这里的一串字符 “d894ec0d” 就是手机的序列号
    在这里插入图片描述

    (4)Android 调试桥 (adb) —— 通过 WLAN 连接到设备

       每次都要用数据线连接手机有点麻烦,而且手机多起来,几部手机可能会掐架抢位置,为了避免这些情况,就可以通过wifi进行连接,不过需要做一些前置条件。

    1. 将 Android 设备和 adb 主机连接到这两者都可以访问的同一 WLAN 网络
    2. 使用 USB 线将设备连接到主机。
    3. 设置目标设备以监听端口 5555 上的 TCP/IP 连接。
      adb tcpip 5555
    4. 拔掉连接目标设备的 USB 线。
    5. 找到 Android 设备的 IP 地址。您可以在设置 > 关于手机 > 状态信息 > IP 地址下找到 IP 地址
    6. 通过 IP 地址连接到设备。
      adb connect device_ip_address:5555
    7. 使用adb devices确认主机已连接到目标设备

    (5)Android 调试桥 (adb) —— 使用adb进行一系列操作

    如需从设备中复制某个文件或目录(及其子目录)

    adb pull remote local
    

    如需将某个文件或目录(及其子目录)复制到设备

    adb push local remote
    

    安装 APK

    adb install path_to_apk
    

    模拟点击

    adb shell input tap 100 300
    

    模拟滑动

    adb shell input swipe 600 800 400 800
    

    adb命令能做的事情还有挺多的,比如打开应用,输入文本,模拟手机按键等等,有兴趣可以自行探索

    展开全文
  • adb安卓调试桥

    2021-03-03 17:54:00
    adb安卓调试桥工具 adb是什么? adb的全称为Android Debug Bridge,就是起到调试桥的作用,是一个使用计算机来调试手机的工具 adb能干什么? 运行设备的shell(命令行) 管理模拟器或设备的端口映射 计算机和...

    adb安卓调试桥工具

    adb是什么?

    adb的全称为Android Debug Bridge,就是起到调试桥的作用,是一个使用计算机来调试手机的工具

    adb能干什么?

    • 运行设备的shell(命令行)

    • 管理模拟器或设备的端口映射

    • 计算机和设备之间上传/下载文件

    • 将本地apk软件安装至模拟器或android设备

    adb的组成原理

    • adb客户端(运行在PC电脑上)
    • adb服务端(运行在PC电脑上),在任务管理器中后台进程可查看
    • adb守护进程(运行在模拟器/手机/平板中)

    adb客户端、服务端、守护进程的关系

    adb客户端(电脑) ------> adb服务器(电脑) ------> adbd守护进程(手机)------> adb服务器(电脑)------> adb客户端(电脑)
    注意:

    如果工作中发现电脑无法通过adb工具连上手机,可以通过以下步骤排查:

    1.查看adb客户端是否启动:在dos中输入adb version命令(已经配置好系统环境变量),观察是否显示adb版本信息,如果没有显式,那么就要查看环境变量配置是否正确,如果显示版本成功,进入下一步;

    2.查看adb服务是否启动:打开任务管理器,查看后台进程中adb.exe服务是否启动,如果没有启动,那么在dos中输入adb kill-server回车,再输入adb start-server回车,再次查看任务管理器,确认adb服务已经启动。如果确定服务已经启动,那么进入下一步;

    3.在dos中输入命令:adb connect 127.0.0.1:21503,再输入adb devices命令观察是否显示连接的设备;

    4.如果经过以上步骤还是不能连接,那么就要考虑是不是adb守护进程的问题了,重启手机或模拟器,接着重复上面的操作尝试。

    adb在测试工作中的实际应用

    • Android系统的APP测试,如:微信、淘宝、饿了吗等所有你耳熟能详或闻所未闻的应用

      1. 安装卸载测试
      2. 查日志
      3. 从设备上拿东西到本地电脑,如:日志、发生错误时的截图
    • Android系统的手机/平板的整机测试,如华为p30手机,小米10手机等

      安卓手机/平板自带的通讯录、相机、计算器、记事本,甚至是“设置”都是软件

    真机测试注意点

    1. 要激活开发者模式
    2. 将USB调试模式改为文件传输或其他模式,不能为仅充电

    在这里插入图片描述

    一般情况下,手机/平板经过以上操作就可以用adb devices查看到真机了(usb数据线要连着);但华为手机有可能需要先在电脑上安装华为手机助手才行

    adb常用命令

    adb version

    adb version
    
    • 查看所启动adb工具的版本号,一般,我们用该命令验证我们电脑本机上的adb工具是否安装成功

    • 注意:平台工具(与真机连接)中的adb工具和各种模拟器中的adb工具版本很有可能是不同的

    • 假设一台电脑上同时具有两个adb工具,且都配置了环境变量,那么以列表顺序从上到下的原则,先配置的那个会被启用

      在这里插入图片描述

    adb help

    adb help
    

    查看帮助文档,

    注意:如果使用一个无效命令,如:adb 1234yyzdss,dos中不会报错,而是会显示帮助信息

    adb devices

    adb devices
    adb devices -l
    

    显示adb工具所连接的所有设备

    通常加 -l 参数显示设备的详细信息

    在这里插入图片描述

    一般,我们用该命令验证我们的adb工具是否已经和设备联通,如果查看到手机/平板/模拟器的状态为offline状态,重启“设备”就完事儿了

    adb install

    下载apk到手机/平板/模拟器,并执行安装过程

    adb (-s ip:port) install <apk文件所在路径>
    
    • -s参数表示指定设备下载(多个设备启动时需要使用-s参数)

    • 这个ip和port是手机/平板/模拟器的ip地址和端口号

    • 当确定电脑中只启动了一个设备时,可以直接使用:adb install d:\xxx\xx.apk

    例子:

    adb -s 127.0.0.1:21503 install d:\xxx\xx.apk
    

    adb uninstall

    卸载手机/平板/模拟器里的APP

    adb uninstall APP包名
    

    APP包名和apk的区别

    App包名就是一个APP应用,如下图的com.tal.kaoyan,就是一个APP

    apk文件是一个安装包文件,安装之后才是APP应用

    在这里插入图片描述

    每一款APP都有一个独有的包名,在AndroidManifest.xml文件中可以看到,一般在该文件的前几行就能看到,如:package=“com.tal.kaoyan”,所以com.tal.kaoyan就是包名,建议复制黏贴,不要自己输入

    利用aapt.exe(apk打包和分析工具),然后通过apk文件的路径名查到包名,如果是模拟器的话,这个工具已经预装好了,和adb.exe在同一级目录,如果是要连真机的,则单独下载和安装这个工具

    在这里插入图片描述

    例子:

    adb uninstall com.tal.kaoyan
    

    adb shell

    进入安卓系统

    adb shell
    

    进入到设备的Android系统后,如果看到命令输入模式是#号,说明是root用户,反之则必须先通过adb root来切换成root用户

    在这里插入图片描述

    在Android系统命令行模式下输入"exit"指令来退出系统

    Android系统需要注意的几个文件夹

    在这里插入图片描述

    在这里插入图片描述

    /data/app/

    用来保存APP的安装包(apk)

    在这里插入图片描述

    /data/data/

    APP的安装目录

    在这里插入图片描述

    /sdcard

    扩展卡目录,用于存放用户的文件,比如截图、日志等等

    对应的就是界面上的【文件管理器】目录

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    adb pull

    从手机中拉取文件到电脑

    adb pull 手机文件路径 电脑保存路径

    adb pull /sdcard/xxx.txt d:\xxx
    

    可以改写拉取的文件名

    adb pull /sdcard/xxx.txt d:\xxx\yyy.txt
    

    注意

    有时候,将取到的东西放到电脑的根目录下(如D盘)有可能会报错,报错的原因是权限问题,需要在D盘根目录下手动创建一个同名文件;另一种处理方式是将取到的东西存放在D盘的子目录下

    adb push

    将电脑本地的东西推送给设备

    adb push 电脑文件路径 手机保存路径

    adb push d:\xxx\yyy.txt /sdcard/
    

    adb kill-server / adb start-server

    重启adb服务器(先杀死,再启动,没有直接重启命令)

    adb connect

    重启服务器后,如果使用adb devices无法查看到设备,则使用adb connect来进行设备的手动连接,如:adb connect 127.0.0.1:21503

    adb logcat

    日志查询系统

    adb logcat		#实时查看日志
    

    一般我们会使用下面这条命令(方便查看)

    adb logcat -v time > d:\xxx\logcat.txt
    

    -v :view,>:重定向符号

    上面命令的意思就是将日志以时间记录形式保存在电脑的d:\xxx\logcat.txt文件中

    adb shell screencap

    屏幕抓取,即截图,可以截取手机当前屏幕

    adb shell screencap -p /sdcard/screenshot001.jpg
    

    /sdcard/screenshot001.jpg表示截屏后,截图文件的存放路径

    adb其他命令

    adb shell dumpsys battery

    adb shell dumpsys battery
    

    在这里插入图片描述

    adb shell dumpsys wifi

    查看当前手机连接的网络

    查询结果非常大,建议重定向,然后搜索关键字"Latest scan results",ssid就是wifi名

    adb shell dumpsys wifi > d:\xxx\wifi.txt
    

    adb shell dumpsys telephony.registry

    查看手机当前通话状态以及是否在服务区(这个命令只可能被用于整机测试的场景)

    adb shell dumpsys telephony.registry > d:\xxx\telephony.txt
    

    mCallState - 呼叫状态

    • 0:表示待机状态
    • 1:表示来电尚未接听状态
    • 2:表示电话占线

    mServiceState - 服务状态

    • 0:表示正常使用状态
    • 1:表示电话没有连接到任何电信运营网络
    • 2:表示电话只能拨打紧急呼叫号码
    • 3:表示电话已关机

    adb shell cat /proc/cpuinfo

    作用:查看设备的CPU相关信息

    adb shell cat /proc/meminfo

    作用:查看设备的内存相关信息

    adb shell cat /system/build.prop

    作用:查看整体设备相关信息

    以上3个命令可以用于手机的整机性能测试(分析)

    adb bugreport

    与adb logcat(查看所有日志信息)不用之处在于:

    adb bugreport是查看启动过程日志以及启动后系统状态,可以用来检查手机启动是否有问题

    adb bugreport > d:\xxx\bugreport.txt
    

    adb shell pm list packages

    作用:查看系统自带APP的以及用户已安装的APP的包(名称)

    可以配合一些自动化代码,查看指定的APP是否安装等场景

    adb其他命令小结

    这些“其它命令”大多数被用于手机整机测试的场景

    令可以用于手机的整机性能测试(分析)**

    展开全文
  • 安卓调试桥adb

    2018-01-31 11:31:35
    adb1.0.32 Android Debug Bridge(ADB)ADB的全称为Android Debug Bridge,就是调试桥的作用,存放在sdk安装目录下的platform-tools文件夹中,借助这个工具,我们可以管理设备或手机模拟器的状态,可以让你与仿真实例...
  • Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。
  • ADB是Android Debug Bridge(安卓调试桥)的缩写,用于通过电脑代码脚本(或者电脑程序等)控制手机进行操作。 2. ADB的安装与否: 判断ADB是否安装成功(此处安装成功包括已经配置了“环境变量”),只需按 win+R ...
  • 一、Android SDK software development kit软件开发工具包,包含各种开发所需的...二、安卓ADB调试桥 (1)adb介绍:adb ( Android Debug Bridge)是一个通用命令行工具,可以通过adb在PC端连接移动端,对移动App...

    一、Android SDK

            software development kit软件开发工具包,包含各种开发所需的API等。Android SDK指的是Android专属的软件开发工具包。

            需要安装jdk、jre和Android SDK集成安装包,根据需要下载合适的版本即可。      

    二、安卓ADB调试桥

            (1)adb介绍:adb ( Android Debug Bridge)是一个通用命令行工具,可以通过adb在PC端连接移动端,对移动App进行调试。Tips:存放在 android_sdk/platform-tools/ 中

            (2) adb工作原理:启动一个 adb 客户端时,此客户端首先检查是否有已运行的 adb 服务器进程。如果没有,它将启动服务器进程。 当服务器启动时,它与本地 TCP 端口 5037 绑定,并侦听从 adb 客户端发送的命令 所有 adb 客户端均使用端口 5037 与 adb 服务器通信。 TCP:传输控制协议。

            (3)启动usb调试

                    ①要在通过 USB 连接的设备上使用 adb,在设备系统设置中启用USB调试( USB debugging),位于开发者选项(Developer options)下。

                    ②在运行 Android 4.2 及更高版本的设备上,Developer options 屏幕默认情况下处于隐藏状态。如需将其显示出来,请转到 设置(Settings) > 关于手机(About phone) 并点按版本号(Build number)七次。返回上一屏幕,在底部可以找到 Developer options

                    ③ 在开发者选项中点击USB调试,并允许

             (4)adb连接移动设备

                    ①连接模拟器:adb  connect  127.0.0.1:62001 夜神模拟器第一个默认端口号是62001,第二个62025,也有可能:52001、52025、62026……

                    ②查看当前已连接的设备:adb  devices

                    ③连接真机:打开USB调试,用数据线连接手机和电脑,在手机端点击同意,在电脑端打开DOS窗口直接输入adb devices查看手机id(由数字及字母构成的字符串,每个手机都是唯一的

            (5) adb服务启动与关闭

                    开启服务:adb start-server

                    关闭服务:adb kill-server

                     如果TCP:5037端口被其他进程占用导致adb服务启动失败,杀死该进程即可---->终极方法重启模拟器/电脑即可。查找占用的进程号:netstat -ano | findstr 5037  杀死该进程:taskkill -f -pid XXX

             (6)adb shell

                    shell是命令解释器,是 linux 系统的字符交互界面。进入adb shell就相当于进入手机内部,如果某个命令必须在手机内部进行执行,就必须先进入shell才可以。

                    进入shell:adb  [-s 设备id]  shell

                    退出shell:exit

             (7)adb安装、查看、卸载App

                    ①安装:

                    安装:adb [-s  设备id]  install  [-r]  apk的路径+文件名

                    默认安装: adb install  XXXX.apk

                    指定设备安装:adb  -s  设备id   install  XXX.apk

                    覆盖安装:adb  install  -r  XXX.apk

                     一般,也可以直接把.apk文件拖动到手机或者模拟器进行安装。

                    ②查看手机中已安装的App的package包名:

                            adb shell pm list package  [-3] ,具有唯一性,com.公司的域名.App的名字

                                    -3 :查看自定义安装的App的package

                            aapt dump badging XXX.apk可以把apk转换成二进制文本打印在DOS窗口

                             aapt dump badging XXX.apk >> PC端路径+xxx.txt 可以导出到一个记事本中进行查看

                     ③卸载:adb uninstall package包名   package指定要操作的App                 

                             也可以在模拟器或者手机中长按App的logo进行卸载

            (8)adb读取和写入文件

                    ①读取:从移动端---->PC端 adb  pull  移动端路径+文件名  PC端路径

                    ②写入:从PC端---->移动端 adb  push   PC端路径+文件名  移动端路径  

                    注意:读取时不能读取到磁盘根目录,否则会提示该路径不存在

             (9)adb屏幕截图

                    adb shell  screencap 移动端路径+图片名.png 图片后缀名推荐使用.png        

            (10)获取package和activity

                    adb shell pm list package -3 可以查看自定义安装的app的

                    package aapt dump badging XXX.apk可以把apk转换成二进制文本打印在DOS窗口

            (11)adb命令小结:

                    常用的手机助手就是通过封装adb命令实现,可以把常用的adb命令写在.bat文件(批处理文件)中,双击执行 .bat,批处理文件,一次性可以执行多个命令。注意:文件名不能使用类似于adb关键字,否则执行会报错

    展开全文
  • ADB(Android Debug Bridge)安卓调试桥
  • https://github.com/nicamoq/SuroADB-Lite SuroADB Lite完全批量生产,是一种ADB Command Execution GUI,它以CMD新手可用的方式使用ADB Command Line程序。 最新更新:SuroADB Lite 2.6 [1/1/21]-添加了设置以输入...
  • Android 调试桥(adb)

    2021-02-25 11:10:08
    Android 调试桥(adb) 您还可以使用 adb 发出命令,如下所示: 从 android_sdk/platform-tools/ 目录中运行 adb devices 命令,以验证您的设备是否已连接。如果已连接,您将看到该设备被列出。 发出任意包含 -d ...
  • Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端...
  • Android调试桥(ADB)

    2010-08-17 09:34:08
    Android 调试桥(adb)是多种用途的工具,该工具可以帮助你管理设备或模拟器 的状态。 可以通过下列几种方法加入adb: •在设备上运行shell命令 •通过端口转发来管理模拟器或设备 •从模拟器或设备上拷贝来或拷贝走...
  • 安卓调试桥 adb的使用

    千次阅读 2021-11-30 19:04:32
    adb又叫安卓调试桥Android Debug Bridge),是android sdk的一个工具,可以通过该命令行工具将安卓手机与PC进行连接,从而通过adb可以来管理、操作模拟器和设备。 2.adb的组成 共有三部分,包括: a.客户端...
  • Android 调试桥 (adb) 是一种与设备通信,执行各种设备操作(例如安装和调试应用)的命令行工具。adb提供了对 Unix shell(可用来在设备上运行各种命令)的访问权限。 adb是一种客户端-服务器程序,包括以下三个...
  • 安卓调试桥 adb.zip

    2021-07-06 15:52:38
    安卓调试桥
  • 专为基于TCP / IP的Android调试桥设计的ADBHoney低交互蜜罐是什么? Android调试桥(ADB)是一种协议,旨在跟踪连接到ADBHoney Low交互蜜罐的仿真和真实电话/电视/ DVR,这是为基于TCP / IP的Android调试桥而设计的...
  • 安卓调试桥 (Android Debug Bridge, adb),是一种可以用来操作手机设备或模拟器的命令行工具。 一、打开手机端USB调试授权 首先我们需要进入开发者模式,以华为mate30手机为例,打开“设置”,拉到最下方,点击...
  • Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器,具体不做多讲,常用的有以下: 查看前台 Activity命令:adb shell dumpsys activity activities | findstr ...
  • replicant是adb (Android 调试桥)的交互式 shell(一个 )。 它最初基于 Chris Wanstrath 出色的命令行包装器。 概述 直接使用adb工具来定位连接的模拟器和设备是冗长而繁琐的。 replicant以多种方式简化了这个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,612
精华内容 4,244
关键字:

安卓调试桥

友情链接: Matrix.rar