Ubuntu下安装ADB的三种方式及USB调试权限配置全指南
发布时间:2026/8/30 2:14:30 作者:尧图编辑部 阅读量:1,286

在 Ubuntu 上装 ADB 其实很简单核心就三条路apt一键安装、Google 官方二进制包手动部署、Snap 安装。多数人用第一条就够了但如果你要的是最新版 ADB或者想在无 root 的桌面环境里快速调试 Android 设备后两种更合适。这次我们直接拆透“Ubuntu ADB”这套调试环境先说不同安装方式怎么选再讲 USB 调试权限怎么配最后给你一批高频命令和排查清单。不管你是做 Android 开发、刷机、数据备份还是想用脚本批量控制多台设备这篇文章都值得收藏。先给一个整体判断ADB 本身不挑显卡、不挑 CPU普通笔记本、虚拟机、云服务器都能跑真正的难点不在安装而在 Ubuntu 的 USB 设备权限、手机端开发者模式的开启以及多设备场景下的设备识别。下面按一条完整流程走一遍。1. ADB 核心能力速览ADBAndroid Debug Bridge是 Android 官方提供的一个通用调试工具通过它可以在电脑端控制手机、平板、模拟器、电视盒子等 Android 设备。能力项说明工具类型命令行调试工具主要功能设备连接、Shell 操作、文件传输、应用安装/卸载、日志抓取、屏幕截图、无线调试、端口映射适用系统Ubuntu 18.04 / 20.04 / 22.04 / 24.04 均可其他 Linux 发行版流程类似安装方式apt 源安装、Google 官方 platform-tools 二进制包、Snap 安装是否支持 USB 设备支持需配置 udev 规则和用户组权限是否支持无线调试支持Android 11 以上可用无线调试旧版本可用adb tcpip方式是否支持批量任务支持通过 Shell 脚本或 Python 封装可一次控制多台设备是否需要图形界面不需要纯命令行对硬件要求极低无独立 GPU 要求虚拟机也能跑是否支持 API 调用无独立 Web API但可通过命令行封装成接口供其他程序调用这里要特别说明ADB 是 Android 调试工具不是 GUI 应用。在 Ubuntu 上安装后所有操作都在终端里完成。如果你更习惯 Windows 下的adb.exe用法Ubuntu 下的命令基本一致只是路径和权限配置稍有差异。2. 适用场景与使用边界2.1 适合什么场景Android 应用开发调试安装测试包、查看日志、模拟点击。刷机与系统修改通过fastboot、adb reboot bootloader进入刷机模式。设备批量管理测试机房、移动设备管理平台通过脚本批量执行命令。数据备份与文件管理adb pull/adb push在电脑和手机之间传文件。自动化测试配合 Appium、Airtest 等工具做 UI 自动化。模拟器调试控制 Ubuntu 上的 Android 模拟器也可以通过 ADB 连接 Windows 上的模拟器。2.2 不适合什么场景想在手机上远程控制桌面应用ADB 不是远程桌面工具。想绕过手机验证码、批量注册账号这类操作涉及合规风险不做推荐。想在没有授权的设备上读取隐私数据ADB 虽然能读部分系统信息但受 Android 权限模型限制且法律风险很高。2.3 使用边界这里必须强调合规ADB 能做的操作很多但“能”不代表“可以”。只在本人拥有或已获授权的设备上进行调试。抓取日志、截图、备份数据时注意不要泄露通讯录、短信、支付信息等敏感内容。通过 ADB 安装应用时需确认应用来源合法。批量操作设备时建议在测试设备或已获得明确授权的设备上运行。涉及版权、隐私、数据安全的内容不是工具的问题而是使用者的问题。ADB 给了底层能力使用者必须自己守住边界。3. Ubuntu 环境准备与前置条件3.1 操作系统要求ADB 在 Ubuntu 上基本没有版本门槛18.04、20.04、22.04、24.04 都能正常安装。如果你的系统是较老的 16.04也建议先升级再安装避免apt源里找不到新版软件包。检查系统版本lsb_release -a3.2 基本依赖如果选择apt安装不需要额外安装依赖系统自带的基础环境就够。如果选择 Google 官方二进制包需要确保系统有unzip和curl或wgetsudo apt update sudo apt install -y unzip curl wget3.3 设备前置条件要在 Ubuntu 上通过 ADB 控制 Android 手机手机端需要进入“设置 - 关于手机”连续点击“版本号”7 次开启开发者模式。在“开发者选项”中开启“USB 调试”。用数据线连接电脑手机弹窗询问“是否允许 USB 调试”时勾选“始终允许”点击确定。如果使用模拟器需要先在模拟器设置中开启 ADB 端口常见模拟器端口为 5554、5555、21503 等。3.4 磁盘与权限安装 ADB 本身只占约几十 MB 到 100MB 空间不需要特殊磁盘规划。但要注意apt安装的 ADB 版本可能不是最新Google 官方二进制包会更新更及时。两种方式的路径也不同后面会具体说明。4. 安装部署与启动方式4.1 方式一apt 源安装推荐最简单在较新版本的 Ubuntu 中ADB 已经收录在官方软件源里直接安装即可。sudo apt update sudo apt install adb安装完成后检查版本adb version输出类似Android Debug Bridge version 1.0.41 Version 33.0.3-8952118这种方式安装的 ADB 会放到/usr/bin/adb可以直接在终端中调用不需要配置环境变量。在部分旧版 Ubuntu 上软件包名称可能是android-tools-adbsudo apt install android-tools-adb记不清自己系统用哪个包名时可以先搜索一下apt search adb4.2 方式二Google 官方 platform-tools版本最新如果你需要最新版本 ADB优先用 Google 官方发布的 platform-tools 压缩包。首先从 Android 开发者网站下载 Linux 版本或者从可靠的镜像站获取。下载后用unzip解压unzip platform-tools-latest-linux.zip解压后得到一个platform-tools目录里面有adb和fastboot。为了方便调用将这两个文件复制到/usr/local/bin/sudo cp platform-tools/adb /usr/local/bin/ sudo cp platform-tools/fastboot /usr/local/bin/设置执行权限sudo chmod x /usr/local/bin/adb sudo chmod x /usr/local/bin/fastboot验证adb version如果提示找不到命令检查/usr/local/bin是否在PATH环境变量中echo $PATH4.3 方式三Snap 安装隔离性好Snap 是目前 Ubuntu 推荐的软件打包格式ADB 也有 Snap 包sudo snap install adbSnap 安装的软件运行在沙盒环境中文件路径与普通安装不同。调用方式仍然是adb version但如果你发现 Snap 版 ADB 无法访问 USB 设备需要检查 Snap 权限必要时加上--devmode参数重新安装或者改用前两种方式。4.4 三种方式对比安装方式命令优点缺点aptsudo apt install adb最简单依赖自动解决版本可能偏旧Google 官方包下载压缩包后手动复制版本最新官方长期更新需要手动配置Snapsudo snap install adb隔离性好卸载干净可能遇到 USB 权限问题个人建议日常开发、刷机、调设备用apt安装就够了如果你经常接触新机型、新特性或者需要 fastboot 最新版建议用方式二。5. 功能测试与效果验证安装完成不等于能用下面给出一套完整验证流程。5.1 验证 ADB 基本命令adb version如果显示出版本号说明 ADB 本体已经可以运行。5.2 配置 USB 设备权限在 Ubuntu 上普通用户直接使用 ADB 访问 USB 设备可能会提示no permissions (missing udev rules)。解决方法是配置 udev 规则和用户组。将当前用户加入plugdev组sudo usermod -aG plugdev $USER创建一个 udev 规则文件让系统在插入 Android 设备时自动分配权限。不同厂商设备有不同 VID厂商 ID最通用的写法是在/etc/udev/rules.d/下新建一个规则文件sudo nano /etc/udev/rules.d/51-android.rules写入以下内容这里用厂商 ID 通配的方法不是针对某一个具体厂商适用性更好SUBSYSTEMusb, ATTR{idVendor}!, MODE0666, GROUPplugdev保存后重载规则sudo udevadm control --reload-rules sudo udevadm trigger重新插拔数据线再执行adb devices如果能看到类似List of devices attached ABCDEF123456 device说明设备已经正确识别。5.3 连接真机并确认授权手机连接电脑后首次执行adb devices时手机上会弹出授权窗口。如果没弹可以尝试adb kill-server adb start-server adb devices如果设备状态显示unauthorized说明手机端没有点允许调试或者授权记忆被清除。在手机上撤销 USB 调试授权重新连接即可。5.4 连接模拟器模拟器的连接方式与真机略不同。例如使用 Android Studio 模拟器时直接用adb devices如果模拟器已在本地运行通常能自动识别。如果看不到可以使用网络端口连接adb connect 127.0.0.1:5555夜神、MuMu 等第三方模拟器的端口不是默认 5555需要先在模拟器设置里查看 ADB 端口再用adb connect连接。这也是很多用户经常卡住的地方。5.5 常用命令实测建议连接设备后建议依次执行以下几个命令验证功能# 查看当前连接的设备列表 adb devices # 进入设备的 shell 环境 adb shell # 退出 shell exit # 查看设备系统版本 adb shell getprop ro.build.version.release # 查看设备型号 adb shell getprop ro.product.model # 安装应用 adb install /path/to/app.apk # 卸载应用 adb uninstall com.example.package # 从手机拉取文件到电脑 adb pull /sdcard/Download/test.txt ~/Desktop/ # 从电脑推送文件到手机 adb push ~/Desktop/test.png /sdcard/Download/这些命令覆盖了 ADB 的三大核心能力设备连接、设备信息读取、文件传输。能跑通说明整个链路没有大问题。6. 接口 API 与批量任务ADB 本身不提供 Web API但它是命令行工具所以可以通过脚本封装变成一个可复用的批量任务模块。这在多设备管理场景中非常实用。6.1 批量处理多台设备当系统连接多台设备时adb devices会列出所有设备。但对多设备执行命令时不能直接adb shell因为 ADB 不知道你要操作哪一台。需要使用-s参数指定设备adb -s 设备序列号 shell getprop ro.product.model批量操作可以写一个简单的 Shell 脚本#!/bin/bash # 批量查看多台设备的 Android 版本 devices$(adb devices | grep -w device | awk {print $1}) if [ -z $devices ]; then echo 没有检测到已授权的设备 exit 1 fi for device in $devices; do echo 设备: $device adb -s $device shell getprop ro.build.version.release echo --- done将脚本保存为batch_check.sh添加执行权限并运行chmod x batch_check.sh ./batch_check.sh6.2 Python 封装 ADB 操作如果希望在 Web 服务或自动化平台中调用 ADB可以用 Python 的subprocess模块封装。import subprocess def run_adb_command(device_idNone, raw_argsNone): 封装 ADB 命令执行 :param device_id: 设备序列号多设备时必须指定 :param raw_args: ADB 命令参数如 [shell, getprop, ro.product.model] :return: 执行结果字符串 cmd [adb] if device_id: cmd.extend([-s, device_id]) cmd.extend(raw_args) result subprocess.run(cmd, capture_outputTrue, textTrue, timeout30) return result.stdout.strip() # 示例查看所有已连接设备的型号 output subprocess.run([adb, devices], capture_outputTrue, textTrue).stdout for line in output.splitlines()[1:]: if device in line: serial line.split()[0] model run_adb_command(device_idserial, raw_args[shell, getprop, ro.product.model]) print(f{serial}: {model})这种方式可以快速接入现有的自动化平台或脚本系统。6.3 批量任务设计建议每个设备操作之间加延时避免手机端 USB 连接过载。执行长时间任务时在脚本里设置超时时间防止单个设备卡死。记录每台设备的执行日志失败时能单独重试。批量安装应用时先检查设备剩余存储空间避免中间失败。7. 资源占用与性能观察7.1 ADB 本身的内存占用ADB 是轻量级命令行工具常驻的adb server进程内存占用很小一般只有几十 MB。用下面的命令可以观察ps aux | grep adb输出中会看到两个主要进程一个是adb server另一个是连接设备后的adb子进程。7.2 设备端资源影响在手机上执行adb shell操作时会调用 Android 系统的 shell资源占用几乎可以忽略。但如果执行adb shell screenrecord录屏、adb shell monkey压力测试或批量传输大文件手机的 CPU、内存、存储 IO 会有明显上升。7.3 如何降低资源占用不需要调试时拔掉数据线或执行adb disconnect释放连接。长时间不用 ADB可以关闭服务adb kill-server批量传输大文件时避免同时进行多个adb pull串行传输更稳定。无线调试比 USB 调试更容易受网络波动影响传输大文件优先用 USB。8. 常见问题与排查方法问题现象可能原因排查方式解决方案adb devices看不到设备手机未开启 USB 调试检查开发者选项和 USB 调试开关在手机上重新开启 USB 调试adb devices显示unauthorized手机未授权当前电脑重新插拔数据线观察手机弹窗手机端点击“允许 USB 调试”可勾选“始终允许”no permissions (missing udev rules)当前用户无 USB 设备权限检查用户组和 udev 规则sudo usermod -aG plugdev $USER配置 udev 规则后重载连接模拟器时adb devices看不到模拟器端口未开放检查模拟器设置中的 ADB 端口使用adb connect 127.0.0.1:端口号adb: createfilew nul failed: 系统找不到指定的文件这是 Windows 环境下常见的路径/脚本问题如果在 Ubuntu 遇到类似报错说明路径中可能含有特殊字符检查命令中的路径和文件是否存在使用绝对路径避免包含中文或空格的特殊路径adb devices显示有两个设备同时连接了真机和模拟器执行adb devices确认设备序列号使用adb -s 设备序列号指定设备执行命令adb install很慢或失败数据线质量差或 USB 接口供电不足更换数据线、换 USB 口优先用直连主机后置 USB 口避免使用扩展坞Ubuntu 重启后 adb 失效adb server 未启动或设备授权被重置执行adb kill-server adb start-server重新授权设备无线调试频繁断开网络不稳定或 Android 系统省电策略检查 WiFi 信号强度保持电脑和手机在同一局域网关闭手机端针对 ADB 的省电优化执行命令无响应设备死机或 adb server 卡住执行adb kill-server后重启服务拔掉数据线重启 adb server 后重连8.1 最常遇到的三个问题问题一adb devices能看到设备但状态一直unauthorized。这种情况在首次连接时最常出现。原因是手机端没有弹出授权窗口或者用户点了“拒绝”。处理方式在手机的“开发者选项 - USB 调试”中点击“撤销 USB 调试授权”然后重新插拔数据线手机会再次弹出授权窗口点击允许即可。问题二普通用户在adb shell时提示权限不足。ADB shell 默认进入的是 Android 设备的shell用户不是 root。部分命令需要 root 权限可以执行adb root重启 adbd 为 root 用户仅限已 root 或测试版系统或者使用adb shell su。对于普通用户开发的 ABI 兼容问题通常不需要 root。问题三连接多个设备后adb command not found。这里的not found一般不是命令缺失而是没有指定设备序列号。多个设备在线时直接执行adb shell会报错必须用adb -s 序列号 shell指定目标设备。也可以在adb devices输出中确认序列号后设置环境变量统一管理。在 Ubuntu 下也可以临时用 export 方式设定默认设备export ANDROID_SERIALABCDEF123456 adb shell这样后续命令就会默认使用该设备。9. 最佳实践与使用建议9.1 安装后的目录管理建议给 ADB 相关工具和脚本建立一个独立目录例如~/android-tools/ ├── platform-tools/ # 官方工具 ├── scripts/ # 批量脚本 ├── apks/ # 测试安装包 ├── screenshots/ # 截图输出 └── logs/ # 执行日志这样在写自动化脚本时路径清晰不会把临时文件混到主目录里。9.2 权限管理不要随便给/usr/local/bin下的文件加 777 权限普通用户可执行就够了。udev 规则文件不要写得过于宽泛建议限定到实际使用设备厂商的 VID降低权限滥用风险。如果你不知道自己的设备 VID可以用lsusb查看。在多用户服务器上部署 ADB 时建议为每个用户单独分配设备访问规则避免跨用户误操作。9.3 设备管理给每台设备设置稳定的 USB 端口避免 Ubuntu 重新分配端口号导致设备识别错乱。定期执行adb devices确认设备状态正常。对于长期闲置的调试设备建议关闭开发者选项降低安全风险。9.4 批量任务安全批量任务看起来效率高但风险同样放大。如果脚本写错可能在几十台设备上同时执行错误操作。建议先在一台设备上跑通再扩展到多台。脚本里加日志记录每一条命令执行结果都要输出到一个单独文件方便事后审计。9.5 合规与隐私保护通过 ADB 抓取日志时日志中可能包含个人敏感信息注意脱敏后再传播。不要通过 ADB 对非授权设备执行任何数据读取操作。批量操作他人设备属于越权行为一律不做。10. 总结与下一步ADB 是 Android 调试的基础工具在 Ubuntu 上安装的最大成本不是命令而是权限配置。装着简单跑通才需要耐心。先明确自己的需求只是偶尔调试一台手机sudo apt install adb就够了做多设备批量管理或需要新版工具用 Google 官方 platform-tools再配合脚本封装很快就能形成一套自己的调试工具链。最容易踩的坑有三个没开手机端 USB 调试、没配置 udev 规则导致权限不足、多设备下没指定序列号。把这三个问题解决整个调试流程基本就顺畅了。下一步可以做的事用adb shell getprop读取设备完整信息建立设备信息清单。用adb backup做简单数据备份测试注意 Android 版本差异。写一个批量安装脚本把 APK 目录下的安装包自动批量部署到多台设备。尝试无线调试摆脱数据线限制。建议先把这一套流程在 Ubuntu 上跑通以后再遇到设备调试需求就不用手忙脚乱了。