一 adb简介

Android 调试桥 (adb) 是一种与设备通信,执行各种设备操作(例如安装和调试应用)的命令行工具。adb提供了对 Unix shell(可用来在设备上运行各种命令)的访问权限。

adb是一种客户端-服务器程序,包括以下三个组件:

  • 客户端 :用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
  • 守护程序 (adbd) :用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。
  • 服务器 :用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。
  • adb 包含在 Android SDK 平台工具软件包中,使用 SDK管理器下载此软件包,该管理器会将其安装在 android_sdk/platform-tools/ 下。

    二 adb 工作原理

    当某个 adb 客户端启动时,客户端会先检查是否有 adb 服务器进程正在运行。如果没有,启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令 。所有 adb 客户端均通过端口 5037 与 adb 服务器通信。

    然后,服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现 adb 守护程序 (adbd),便会与相应的端口建立连接。

    服务器与所有设备均建立连接后,您便可以使用 adb 命令访问这些设备。

    三 配置adb环境

    adb默认在系统的安卓sdk下的 platform-tools目录下,即android_sdk/platform-tools/ 目录。如果想直接在Android Studio的Terminal控制台使用,需要先配置好环境。

    打开终端,输入以下命令:

    touch .bash_profile open -e .bash_profile

    在弹出的配置页中,配上自己安卓platform-tools的路径,我的实例如下:

    export PATH=${PATH}:/Users/ystm1/Library/Android/sdk/tools:/Users/ystm1/Library/Android/sdk/platform-tools
    

    保存退出,此刻要记得更新配置生效:

    source .bash_profile
    

    如果是zsh用户,上述配置可能对于你而言只是一次性的,你重启一次电脑后可能会发现,我的adb命令又报错“zsh: command not found: adb”了。不要慌,因为你还没有配置配置 .zshrc(非zsh用户忽略)

    1)终端中输入:open .zshrc

    2)如果已经有了,输入:open .zshrc -e

    3)在打开的文件中最后一行添加: source ~./bash_profile

    4)输入:source ~/.zshrc 使其立即生效

    四 常用的adb命令

    4.1 help命令

    查看所有支持的 adb 命令的详细列表:

    adb --help
    

    4.2 devices 命令

    devices 命令生成已连接设备的列表。

    adb devices -l
    
    (base) ystm1@ystm1 ~ % adb devices -lList of devices attached192.168.1.110:5556     device product:dipper model:MI_8 device:dipper transport_id:290192.168.1.124:5558     device product:PD1616 model:vivo_X9 device:PD1616 transport_id:296
    

    以下状态信息:

  • 序列号:由 adb 创建的字符串,用于通过端口号唯一标识设备。
  • 状态:设备的连接状态可以是以下几项之一:
  • offline:设备未连接到 adb 或没有响应。
  • device:设备现已连接到 adb 服务器。请注意,此状态并不表示 Android 系统已完全启动并可正常运行,因为在设备连接到 adb 时系统仍在启动。不过,在启动后,这将是设备的正常运行状态。
  • no device:未连接任何设备。
  • 说明:如果您包含 -l 选项,devices 命令会告知您设备是什么。当您连接了多个设备时,此信息很有用,可帮助您将它们区分开来。
  • 4.3 install 命令

    install 命令在模拟器或连接的设备上安装 APK

    adb install path_to_apk
    

    4.4 shell 命令

    shell 命令通过 adb 发出设备命令,也可以启动交互式 shell。如需发出单个命令,请使用 shell 命令,如下所示:

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

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

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

    要退出交互式 shell,请按 Ctrl + D 键或输入 exit

    Android 提供了大多数常见的 Unix 命令行工具。如需查看可用工具的列表,请使用以下命令:

    adb shell ls /system/bin
    

    4.5 Activity 管理器 (am)

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

    Activity 管理器 (am),调用软件包管理器 (pm)和调用设备政策管理器 (dpm)使用不多,需要时可查阅官方文档

    五 最佳实践 · 无线调试,解放烦人的数据线

    5.1 无线连接步骤

    将手机与开发的电脑处于同一局域网,在电脑的Android Studio中打开命令行 ,注意需要先用USB数据线让手机连接上Android Studio,此刻你的页面应该是这样:
    
    此刻打开Android Studio中Teiminal命令行,连接运行 adb devices 命令:
    

    如图,List of devices attached表示连接到Android Studio的设备列表,6UK9X20411X01598 代表我们用数据线连接到Android Studio的设备序列号。

    找到了这个设备,接下来我们需要将这个设备通过局域网无线连接到Android Studio,继续输命令:

     adb -s 6UK9X20411X01598  tcpip 5555
    

    5555是端口号,注意与常用端口区分。该命令将用数据线连接到Android Studio的设备与5555端口绑定。

    接下来我们只需要再将Android Studio绑到局域网中的该端口即可(注意下面106的局域网地址是需要连接的设备的局域网地址,5555端口号是上面tcpip设定的端口号,需要保持一致):

    adb connect 192.168.1.106:5555 
    

    至此大功告成!输入adb devices -l 命令,看看结果吧,此刻可以把烦人的数据线摘掉了哦!

    下面是我的截图

    我一直用的这种调试方式,可以无线安装app调试,相比数据线而言一开始有担心会不会装包速度变慢,但是使用下来100m以内的安装包(我也没写100M开外大小的hh)没有感觉到特别明显的速度延迟,使用感觉还是很好的。

    5.2 可能的问题

    如果 adb 连接断开:

    确保主机仍与 Android 设备连接到同一个 WLAN 网络。

    通过再次执行 adb connect 步骤重新连接。

    如果上述操作未解决问题,重置 adb 主机:

    adb kill-server adb start-server
    

    然后,从头开始操作。

    注意:华为设备可能一开始会连接不成功,注意在开发者选项里,打开:“仅充电”模式下允许ADB调试!

    六 (2021.2.24 补充更新)Android 11 的 无线连接

    Android 11之前,我们在用常规方法连接adb时,总是不可避免地要先用数据线连接到手机。

    可有时候就是没有数据线或者驱动等问题,连接不上手机,又或者数据线连上了手机,但是接触不良经常断开,此刻显得非常得麻烦。

    Android11的无线调试很好地解决 这个问题,它支持全程无数据线直接连接。

    Android 11 支持通过 Android 调试桥 (adb) 从工作站以无线方式部署和调试应用,而无需通过 USB 实际连接您的设备,从而避免常见的 USB 连接问题(例如驱动程序安装方面的问题)。

    如需使用无线调试,您需要使用配对码将您的设备与工作站配对。您的工作站和设备必须连接到同一无线网络。

    操作步骤:

    1:启用开发者模式,并打开无线调试

    2:选择使用配对码配对设备。记下设备上显示的配对码、IP 地址和端口号

    3:打开Android Studio的终端,输入

    adb pair ipaddr:port
    

    随后终端会提示让你输入配对码,输入之前手机上展示的配对码即可!

    (base) ystm1@ystm1 ~ % adb pair 192.168.1.113:39753
    Enter pairing code: 605434
    Successfully paired to 192.168.1.113:39753 [guid=adb-6d233f38-fn4ZTM]
    (base) ystm1@ystm1 ~ %
    复制代码
    分类:
    Android
  •