ADB——Android 开发中不可或缺的调试桥梁

发布于:2025-03-04 ⋅ 阅读:(32) ⋅ 点赞:(0)

前言

在工作中,因为做的是app/mobile game相关,所以经常会连接手机进行测试。每次装包或者看log都需要经历——找线->连接->识别安装,虽操作不算繁琐,但有线连接也有弊端,如测试设备较多时需要连接额外的扩展坞;线接触不良时会特别痛苦等等。

在Android Studio的Android项目中,每次点击选择设备的下拉菜单时,都能看到"Pair Devices Using Wi-Fi"的字样,发现其实可以通过无线连接来操作手机,然后就接触到了ADB。

Android 调试桥 (adb)

adb(android debug bridge),翻译过来是安卓调试桥。是google对Android设备做的一个命令行工具,adb命令可以执行各种设备操作,例如:安装apk、push/pull文件、无线连接(端口转发)、打开apk等。

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

客户端:用于发送命令。客户端在开发机器上运行。您可以通过发出 adb 命令从命令行终端调用客户端。

守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。

服务器:用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。

下载

如果已经安装了AndroidSDK,并在安装时勾选了一起下载platform-tools。

在这里插入图片描述

则已经在电脑上下载好了adb,具体位置在:

{AndroidSDK路径}\platform-tools\adb.exe

如果没有platform-tools这个文件夹,说明需要单独下载,单独下载地址:
SDK 平台工具

添加到环境变量

下载完成后,需要在此电脑-属性-高级系统设置-高级选项卡-环境变量-系统变量-path中添加platform-tools路径

在这里插入图片描述

点击确定关闭所有窗口后,在命令行中运行

adb --version

在这里插入图片描述

看到正常的版本信息打印,那么恭喜你,可以继续下一步啦。

如果还是有报错,则需要再返回上一步倒腾倒腾。

在设备中启用adb调试

想在手机上运行adb调试命令,则必须进入设置-开发者选项,找到并打开USB调试的开关。

关于如何找到开发者选项,不同设备之间有所差距,一般来说都是点击手机系统7次,就能打开开发者选项。

如果方法不管用,具体可以去搜索引擎查询"xx手机系统如何打开开发者选项"。

下面以小米14为例:

打开设置——我的设备——全部参数与信息——点击OS版本7次

在这里插入图片描述

开启之后,回到设置的第一个页面,在最下方有一个更多设置,更多设置的最下方有一个开发者选项,进入后找到USB调试开关,打开即可。

(如果需要通过ADB命令安装apk,还需打开USB安装开关)

在这里插入图片描述

无线连接到手机

方法一(需要Android 11 API30及以上的设备):

方法一详情

此方法并不实用,且连接不够稳定,有版本限制等,此处不多赘述介绍,笔者主要使用方法二

方法二(需先进行一次有线连接):

  1. 将 Android 设备和 adb 主机连接到同一 Wi-Fi 网络。
  2. 使用 USB 线将设备连接到主机。
  3. 设置目标设备以监听端口 5555 上的 TCP/IP 连接:
adb tcpip 5555
  1. 拔掉连接目标设备的 USB 线。
  2. 找到 Android 设备的 IP 地址。例如,对于 Nexus 设备,您可以在设置 > 关于手机> 状态 > IP 地址下找到 IP 地址。
  3. 通过 IP 地址连接到设备:
adb connect [device_ip_address]:5555
  1. 确认主机已连接到目标设备:

打开cmd运行命令adb devices

List of devices attached 
[device_ip_address]:5555 device

如果看到以上信息,则该设备现已连接到 adb。

如果与设备的 adb 连接断开:

  • 确保主机仍与 Android 设备连接到同一 Wi-Fi 网络。
  • 通过再次执行 adb connect 步骤重新连接。
  • 如果这样无法解决问题,请重置 adb 主机:

adb kill-server

然后,从头开始操作。

adb常用命令

  • 调用adb命令时,有一些命令可以不用指定设备,例如查看设备,停止adb服务器等。
  • 而有一些命令是针对设备的操作,需要指定设备。例如安装apk,复制文件等。但仅连接1个设备时,可以省略指定设备

查看已连接到adb的设备

adb devices
adb devices adb devices -l

在这里插入图片描述

查看已连接到电脑adb的所有设备

如果加上-l 则会展示更多信息

停止adb服务器

有时候adb命令执行有问题时,可以停止重启adb服务器

停止:adb kill-server,然后调用任意代码就能重启adb服务器。

安装apk

[apk_path]就是电脑上apk的全路径

[-s serial_number] serial_number就是通过adb devices获取到的名称,用来指定该命令用于哪一个设备。在只连接了1个设备的时候,可以省略该命令

adb [-s serial_number] install [apk_path]

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

[remote_path] 即电脑上文件路径

[local_path]即手机路径

从设备中复制文件,可以将任意目录的文件复制到任意位置

adb pull [remote_path] [local_path]

复制文件到设备

adb push [local_path] [remote_path]

发出Shell命令

调用activity管理器

启动activity

[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:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。

[intent] 包名/activity名

adb shell am start [options] [intent]

例如:

adb shell am start tds.demo.util/tds.demo.util.MainActivity

调用软件包管理器(pm)

清除apk所有数据

[package_name] 应用程序包名

adb shell pm clear [package_name]

结语

学会这些命令,可以帮助我在手机上测试提供许多便利,最大的帮助就是从有线变为无线,还有实现和Android studio一样的,点击run就可以装包并打开activity。

为此我写了一个windows版本的flutter工具——tds_android_utils,包装了我平时常用的一些命令,有机会的话下一篇讲讲。

https://github.com/TDSSSzero/tds_android_util