ADB环境配置与连接实战:从零搭建安卓调试桥梁
2026/9/19 2:27:48 网站建设 项目流程

这类工具最值得先看的不是功能列表,而是能不能在普通环境里稳定跑起来。ADB(Android Debug Bridge)调试工具,对于搞安卓开发、测试或者喜欢折腾手机、电视盒子的人来说,是绕不开的。它解决的核心问题,就是让你能在电脑上通过命令行,直接对安卓设备进行深度操作,比如安装卸载应用、传输文件、执行Shell命令、抓取日志,甚至是自动化测试。

很多人第一次接触ADB,要么是跟着教程刷机、装框架,要么是想在电脑上控制手机。但新手最容易卡住的地方,往往不是命令本身,而是环境配置、设备连接和权限问题。你可能会遇到“adb不是内部或外部命令”、“device not found”、“unauthorized”这些经典拦路虎。这篇文章不会只给你一个命令列表,而是会像刚踩完一遍坑一样,带你从零开始,把环境搭稳、连接打通,再聊聊怎么用这些命令组合出一些“好玩”的自动化操作。我会更建议把第一次测试拆成三步:环境配置、单设备连接验证、命令组合与实战。

下面按实际落地顺序拆一遍。

1. 先搞定环境:别让“不是内部命令”卡在第一步

很多人兴致勃勃打开命令行,输入adb,结果系统告诉你“不是内部或外部命令”,热情瞬间浇灭一半。这不是ADB的问题,是你的系统找不到这个可执行文件。

1.1 获取ADB工具包:选对版本,放对地方

ADB工具包通常包含三个核心文件:adb.exe(Windows)、AdbWinApi.dllAdbWinUsbApi.dll。在Mac或Linux上则是adb可执行文件。

从哪里获取?

  1. 官方途径(推荐):下载完整的Android SDK Platform-Tools。这是最稳妥的方式,版本新且兼容性好。你可以去Android开发者官网找,或者使用一些包管理工具(如scoopon Windows,brewon macOS)安装。
  2. 第三方整合包:网上有很多“ADB一键工具包”,对于只想快速使用的用户比较方便。但要注意来源安全,避免捆绑恶意软件。

版本选择

  • 系统架构:如果你的电脑是64位系统,优先选择64位版本。不过大多数32位版本在64位系统上也能运行。
  • 设备兼容:一般新版本向下兼容。如果遇到老设备(特别是某些电视盒子)连接问题,可以尝试换用旧版本的ADB驱动或工具包。

存放位置: 不要放在路径很深的目录里,比如“下载”文件夹。我建议专门创建一个简单的目录,例如:

  • Windows:C:\adb
  • macOS/Linux:~/adb

把解压出来的那几个核心文件直接放到这个目录里。接下来,就是要让系统在任何地方都能找到这个目录。

1.2 配置系统环境变量:一劳永逸的关键步骤

这是解决“不是内部命令”的根本方法。原理是告诉操作系统:“当你听到adb这个命令时,请去我指定的那个文件夹里找执行文件。”

Windows 配置步骤:

  1. 右键点击“此电脑”或“计算机”,选择“属性”。
  2. 点击“高级系统设置”。
  3. 在“高级”选项卡下,点击“环境变量”。
  4. 在下面的“系统变量”区域(如果只想当前用户用,选“用户变量”),找到并选中Path变量,点击“编辑”。
  5. 点击“新建”,然后将你的ADB工具目录的完整路径(例如C:\adb)添加进去。
  6. 点击“确定”保存所有窗口。

macOS / Linux 配置步骤:通常通过修改 shell 配置文件(如~/.bashrc,~/.zshrc)来实现。

  1. 打开终端。
  2. 使用文本编辑器打开配置文件,例如:nano ~/.zshrc
  3. 在文件末尾添加一行:export PATH=$PATH:~/adb(请将~/adb替换为你的实际路径)。
  4. 按下Ctrl+X,然后按Y确认保存,再按回车确认文件名。
  5. 让配置立即生效:执行source ~/.zshrc

如何验证配置成功?打开一个新的命令行窗口(重要!必须新开,让环境变量生效),输入:

adb version

如果成功显示ADB的版本号(例如Android Debug Bridge version 1.0.41),恭喜你,环境配置成功了。如果还不行,检查路径是否拼写正确,是否在新窗口执行。

1.3 安装必要的驱动(主要是Windows)

对于大多数现代安卓手机,在开启USB调试后,Windows 10/11 通常能自动安装合适的驱动(称为 “Android ADB Interface” 或 “Google USB Driver”)。 但一些老设备、特定品牌的设备(如某些电视盒子、车载设备)或使用非标准接口的设备,可能需要手动安装驱动。

驱动问题典型症状

  • adb devices列表里设备显示为unauthorized(已授权但驱动可能没问题)或根本不在列表里。
  • 设备管理器里看到设备带黄色感叹号,显示为“未知设备”或“ADB Interface”有问题。

解决方法

  1. 安装通用驱动:下载并安装“Google USB Driver”(可通过Android Studio的SDK Manager获取)。
  2. 品牌官方驱动:去手机厂商官网下载对应的USB驱动(如华为HiSuite、小米助手、三星USB驱动等)。
  3. 手动更新驱动:在设备管理器中右键点击有问题的设备 -> “更新驱动程序” -> “浏览我的电脑以查找驱动程序” -> 手动定位到你下载的驱动文件夹。

注意:驱动安装成功后,设备管理器里应该能看到类似Android Device->Android ADB Interface的条目。

2. 连接设备:从“Device Not Found”到“device”

环境好了,命令能认了,下一步就是把设备和电脑连上。这里花样最多,坑也最多。

2.1 开启设备的USB调试模式

这是必须的,相当于给设备开了一扇让ADB进来的“后门”。

在安卓手机上(不同品牌菜单位置略有差异):

  1. 进入“设置” -> “关于手机”。
  2. 连续点击“版本号”7次,直到出现“您已处于开发者模式”的提示。
  3. 返回设置,找到新出现的“开发者选项”或“系统与更新”->“开发者选项”。
  4. 在开发者选项里,找到并开启“USB调试”。

在电视或盒子上:方法更多样,也更棘手,因为很多厂商隐藏了入口。

  1. 设置菜单:在系统设置的“关于”或“设备信息”里,狂按遥控器方向键或版本号,有可能调出“开发者选项”,然后开启“ADB调试”。
  2. 工程模式:通过特定遥控器按键组合(如“上上下下左右左右”)进入工程模式,寻找ADB开关。
  3. 网络ADB:有些设备支持通过网络连接ADB,你需要先在设置里找到“网络ADB”或“无线调试”并开启,记下显示的IP地址和端口。

2.2 连接方式:USB vs. 网络/Wi-Fi

USB连接(最稳定,首选):

  1. 用数据线连接设备和电脑。
  2. 在设备上,当弹出“允许USB调试吗?”的对话框时,勾选“始终允许”,然后点击“确定”。这是解决unauthorized的关键。
  3. 在电脑命令行输入:
    adb devices
    如果一切正常,你会看到类似以下的输出:
    List of devices attached xxxxxxxx device
    device状态表示已授权并连接成功。如果是unauthorized,请检查设备屏幕是否点击了授权。

网络/Wi-Fi连接(适合无USB口或远程操作):前提:设备与电脑在同一局域网,并且你已经通过USB方式完成过一次初始授权。

  1. 先用USB连接并授权
  2. 获取设备IP地址(通常在设置->关于->状态信息里)。
  3. 在命令行设置端口监听:
    adb tcpip 5555
    (5555是默认端口,可更改)
  4. 拔掉USB线。
  5. 使用网络连接:
    adb connect 设备IP地址:5555
    (例如:adb connect 192.168.1.100:5555
  6. 再次运行adb devices,应该能看到设备通过IP地址连接。

注意:网络连接可能受防火墙、路由器设置影响,且速度不如USB。如果adb connect失败,检查IP和端口,并确保设备网络ADB功能已开启(部分设备需单独开启“网络ADB调试”)。

2.3 疑难杂症排查顺序

adb devices显示为空、offlineunauthorized时,按这个顺序排查:

  1. 检查数据线:有些线只能充电,不能传输数据。换一根确认支持数据传输的线。
  2. 检查USB端口:换一个电脑上的USB口试试,特别是台式机,优先使用机箱后部主板原生的USB口。
  3. 检查设备弹窗:手机/盒子屏幕上是否出现了“允许USB调试”的请求?务必点击“允许”。
  4. 检查驱动:在设备管理器中查看设备状态,有无黄色感叹号。
  5. 重启ADB服务:有时候ADB服务会卡住。
    adb kill-server adb start-server
    然后再执行adb devices
  6. 检查设备ADB状态:在已授权的设备上,进入开发者选项,尝试关闭再打开“USB调试”。
  7. 换用不同版本的ADB工具:特别是对于老设备或电视盒子,新版本ADB可能不兼容。
  8. 查看设备日志:在命令行输入adb logcat,看看连接过程中设备端是否有相关错误日志输出。

3. 核心命令实战:从基础操作到“好玩的东西”

连接稳定之后,才是玩转ADB的开始。命令很多,但掌握几个核心组合,就能实现大部分想法。

3.1 文件管理:传、删、看

  • 推送文件到设备
    adb push <本地文件路径> <设备目标路径>
    例如:adb push C:\demo.apk /sdcard/Download/把电脑上的apk推到手机下载目录。
  • 从设备拉取文件
    adb pull <设备文件路径> [本地保存路径]
    例如:adb pull /sdcard/DCIM/Camera/photo.jpg .把照片拉到当前目录。
  • 查看设备文件列表
    adb shell ls <目录路径>
    例如:adb shell ls /sdcard/
  • 删除设备文件
    adb shell rm <文件路径>

注意:设备系统分区(如/system)通常需要root权限才能写入。操作/sdcard/(内部存储)一般不需要。

3.2 应用管理:装、卸、清、冻

  • 安装应用
    adb install <apk文件路径>
    -r参数覆盖安装,-d允许降级安装。 例如:adb install -r demo.apk
  • 卸载应用
    adb uninstall <应用包名>
    包名不是应用名,可以用adb shell pm list packages查看,或使用adb shell pm list packages | grep keyword搜索。
  • 清除应用数据(相当于恢复出厂设置):
    adb shell pm clear <应用包名>
  • 启用/禁用应用(无需root,但需要设备管理员权限或adb授权):
    adb shell pm disable-user <应用包名> # 禁用 adb shell pm enable <应用包名> # 启用
    这可以用来“冻结”系统预装的无用软件,非常实用。

3.3 设备信息与Shell命令

  • 进入交互式Shell
    adb shell
    之后你就可以像在Linux终端里一样操作设备了。输入exit退出。
  • 执行单条Shell命令
    adb shell <命令>
    例如:
    • adb shell getprop ro.product.model(获取设备型号)
    • adb shell dumpsys battery(查看电池信息)
    • adb shell top -n 1(查看实时进程,类似任务管理器)
    • adb shell cat /proc/cpuinfo(查看CPU信息)
    • adb shell wm size(查看屏幕分辨率)
    • adb shell settings get global policy_control(查看某些系统策略)

3.4 输入模拟与屏幕操作

这是实现自动化的核心。

  • 模拟按键
    adb shell input keyevent <键值>
    例如:
    • KEYCODE_HOME(3): 主页键
    • KEYCODE_BACK(4): 返回键
    • KEYCODE_POWER(26): 电源键
    • KEYCODE_VOLUME_UP(24): 音量+
    • KEYCODE_ENTER(66): 回车 用法:adb shell input keyevent 3adb shell input keyevent KEYCODE_HOME
  • 模拟触摸/滑动
    adb shell input swipe <x1> <y1> <x2> <y2> [时长(ms)] adb shell input tap <x> <y>
    例如:adb shell input swipe 500 1000 500 500 200从坐标(500,1000)滑动到(500,500),用时200毫秒。坐标原点在屏幕左上角。
  • 模拟文本输入
    adb shell input text "hello"
    注意:不支持中文直接输入,且有些符号需要转义。

3.5 截图与录屏

  • 截图
    adb shell screencap -p /sdcard/screenshot.png adb pull /sdcard/screenshot.png .
    可以合并成一条命令(使用shell管道):
    adb exec-out screencap -p > screenshot.png
  • 录屏
    adb shell screenrecord /sdcard/demo.mp4
    默认录制最多180秒,按Ctrl+C停止。录制参数可以设置分辨率、码率等。

4. 组合起来:打造你的“好玩的东西”

单独的命令只是工具,组合起来才能产生化学反应。下面举几个思路,你可以根据自己的需求扩展。

4.1 自动化日常任务(批处理脚本)

假设你每天上班第一件事是打开手机上的几个特定应用(微信、钉钉、邮箱)。你可以写一个.bat(Windows) 或.sh(macOS/Linux) 脚本:

@echo off REM Windows批处理示例:auto_start.bat echo 正在连接设备... adb devices echo 正在解锁屏幕(假设滑动解锁)... adb shell input swipe 300 1000 300 300 500 echo 正在打开微信... adb shell am start -n com.tencent.mm/.ui.LauncherUI timeout /t 2 echo 正在打开钉钉... adb shell am start -n com.alibaba.android.rimet/.biz.LaunchHomeActivity timeout /t 2 echo 正在打开邮箱... adb shell am start -n com.android.email/.activity.Welcome echo 任务完成! pause

解释

  • am start -n <包名/活动名>是启动应用的核心命令。活动名通常需要查找,一个简单的方法是:打开应用,然后执行adb shell dumpsys window | findstr mCurrentFocus(Windows) 或adb shell dumpsys window | grep mCurrentFocus(macOS/Linux) 来查看当前最上层活动的名称。
  • timeout /t 2(Windows) 或sleep 2(macOS/Linux) 是等待2秒,给应用启动留出时间。

4.2 批量安装/卸载应用

如果你是个应用测试员,或者需要给多台设备部署同一批应用:

REM 批量安装当前目录下所有apk for %%i in (*.apk) do ( echo 正在安装 %%i... adb install -r "%%i" if !errorlevel! equ 0 ( echo %%i 安装成功。 ) else ( echo %%i 安装失败! ) )

4.3 简易的“远程控制器”

结合网络ADB,你可以在电脑上写一个简单的脚本,用键盘控制家里的电视盒子(假设已通过网络ADB连接):

REM 简单示例:用键盘方向键控制盒子 :loop choice /c wasdqe /n /m "W上 A左 S下 D右 E确认 Q返回:" if errorlevel 6 goto key_q if errorlevel 5 goto key_e if errorlevel 4 goto key_d if errorlevel 3 goto key_s if errorlevel 2 goto key_a if errorlevel 1 goto key_w :key_w adb shell input keyevent KEYCODE_DPAD_UP goto loop :key_a adb shell input keyevent KEYCODE_DPAD_LEFT goto loop :key_s adb shell input keyevent KEYCODE_DPAD_DOWN goto loop :key_d adb shell input keyevent KEYCODE_DPAD_RIGHT goto loop :key_e adb shell input keyevent KEYCODE_ENTER goto loop :key_q adb shell input keyevent KEYCODE_BACK goto loop

4.4 监控与日志抓取

开发调试时非常有用。

  • 过滤特定标签的日志
    adb logcat -s “MyAppTag”
  • 将日志输出到文件
    adb logcat -d > log.txt
    -d参数表示抓取当前缓冲区日志然后退出。
  • 实时查看CPU占用(需要设备支持top命令):
    adb shell top -d 1
    这会每秒刷新一次进程信息。

4.5 提取系统文件(需Root或特定权限)

警告:此操作有风险,可能破坏系统,仅适用于已获取Root权限的设备或用于学习研究。例如,提取 boot.img(常用于制作Magisk模块或备份):

adb shell su dd if=/dev/block/platform/soc/by-name/boot of=/sdcard/boot.img exit exit adb pull /sdcard/boot.img .

重要:块设备路径(/dev/block/platform/...)因设备而异,切勿直接照抄。错误操作可能导致设备变砖。

5. 高级技巧与避坑指南

当基础玩转后,你会遇到更具体的问题和需求。

5.1 同时控制多台设备

如果你连接了多台设备,执行命令时需要指定设备。

  1. 先用adb devices获取设备序列号。
  2. 在命令中加入-s <序列号>参数。
    adb -s xxxxxxxx shell input keyevent KEYCODE_HOME
  3. 或者,设置一个环境变量ANDROID_SERIAL来指定默认设备。

5.2 处理“Read-only file system”错误

在尝试向/system等分区写入文件时,可能会遇到这个错误。即使有root权限,也需要先重新挂载分区为可写。

adb shell su mount -o rw,remount /system

操作完成后,建议改回只读以防误操作:

mount -o ro,remount /system

5.3 无线调试(Android 11+)

新版本安卓提供了更稳定的无线调试方式,无需先通过USB。

  1. 在开发者选项中找到“无线调试”,开启。
  2. 点击“使用配对码配对设备”。
  3. 在电脑上使用:
    adb pair <设备Wi-Fi配对IP:端口> <配对码>
    例如:adb pair 192.168.1.100:12345 123456
  4. 配对成功后,再使用adb connect <设备IP:端口>连接。

5.4 常见错误与解决思路

  • error: device not found
    • 检查USB连接、驱动、数据线。
    • 检查设备是否授权USB调试。
    • 运行adb kill-server && adb start-server
    • 换USB口,换电脑。
  • adb: unauthorized
    • 检查设备屏幕,点击授权对话框。
    • 在开发者选项里,撤销USB调试授权,然后重新连接。
  • no such file or directory(如材料中提到的/data/adb/modules/.../script4.sh):
    • 文件路径确实不存在。检查路径拼写。
    • 该路径可能需要root权限才能访问。先执行adb shell然后su提权再尝试。
    • 模块可能未正确安装或启用。
  • inspect白屏或工具无响应
    • 某些图形化ADB工具(如inspect)依赖特定环境或权限。尝试以管理员身份运行命令行或工具。
    • 可能是ADB版本与工具不兼容。尝试更新或回退ADB版本。
  • adb sideload失败
    • 通常是在设备Recovery模式下使用。确保设备已进入正确的Recovery模式(如TWRP)。
    • 检查刷机包(ZIP文件)是否完整、兼容。
    • 在Recovery模式下,可能需要先挂载/system等分区。

5.5 安全与风险提示

  1. 授权谨慎:只在可信的电脑上点击“允许USB调试”。一旦授权,这台电脑对你的设备有很高的控制权。
  2. 操作谨慎:特别是rmddpm uninstallpm disable等命令,执行前务必确认目标。误删系统文件或禁用核心应用可能导致设备无法启动。
  3. 备份重要数据:在进行任何可能修改系统或数据的操作前,备份个人数据。
  4. 了解设备状态:操作电视盒子、老旧手机时,先查清楚其芯片方案、系统版本,寻找对应的社区教程,不要盲目执行网上找到的命令。

ADB的强大在于它将图形界面背后的底层通道开放了出来。从最简单的文件传输,到复杂的自动化脚本和系统调试,它提供了一个统一的桥梁。我个人更建议先把单设备连接和基础文件、应用管理命令玩熟,理解每个命令执行后设备端的实际反应。当你能稳定地让设备听你指挥时,那些“好玩的东西”自然就会从你的需求里生长出来——可能是自动打卡脚本,可能是电视盒子遥控器,也可能是应用测试流水线。这个工具真正落地时,最该盯住的不是命令列表,而是连接稳定性、操作准确性和对设备状态的清醒认知。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询