
Linux 系统下 ADB 环境 的详细安装步骤和基础设置指南
-
- [第一步:安装 ADB 工具](#第一步:安装 ADB 工具)
-
- [1. Ubuntu / Debian / Linux Mint / Kali](#1. Ubuntu / Debian / Linux Mint / Kali)
- [2. Fedora / CentOS / RHEL](#2. Fedora / CentOS / RHEL)
- [3. Arch Linux / Manjaro / EndeavourOS](#3. Arch Linux / Manjaro / EndeavourOS)
- [4. 通用方法 (手动下载最新版)](#4. 通用方法 (手动下载最新版))
- [第二步:配置 USB 权限规则 (关键步骤 ⚠️)](#第二步:配置 USB 权限规则 (关键步骤 ⚠️))
-
- [方法 A:使用官方提供的 udev 规则脚本 (推荐)](#方法 A:使用官方提供的 udev 规则脚本 (推荐))
- [方法 B:手动创建规则文件 (适用于包管理器安装)](#方法 B:手动创建规则文件 (适用于包管理器安装))
- 第三步:基础使用与验证
- [第四步:配置 Shell 环境变量 (可选)](#第四步:配置 Shell 环境变量 (可选))
- 第五步:常用故障排查 (Linux 特有)
-
- [1. 提示 `adb: command not found`](#1. 提示
adb: command not found) - [2. 提示 `no permissions` (最常见)](#2. 提示
no permissions(最常见)) - [3. 手机连接后没有任何反应](#3. 手机连接后没有任何反应)
- [4. 多个用户或权限冲突](#4. 多个用户或权限冲突)
- [5. `???????????? no permissions`](#5.
???????????? no permissions) - [6. 设备管理器中看不到手机,或显示 `QHSUSB_BULK`](#6. 设备管理器中看不到手机,或显示
QHSUSB_BULK) - [7. `adb devices` 列表为空,但手机在充电](#7.
adb devices列表为空,但手机在充电) - [8. 无线调试 (WiFi) 连接失败](#8. 无线调试 (WiFi) 连接失败)
- [1. 提示 `adb: command not found`](#1. 提示
- 第六步:无线调试 (无需 Root,无需特殊驱动)
- 第七步:学习资源推荐
-
- [1. 书籍推荐](#1. 书籍推荐)
- [2. 线上资源与文档](#2. 线上资源与文档)
- [3. 实践练习路线](#3. 实践练习路线)
本文详细介绍了在Linux系统下安装和配置ADB环境的完整步骤。针对Ubuntu/Debian、Fedora/CentOS和Arch Linux等主流发行版提供了不同的安装方法,重点讲解了关键的USB权限配置(包括官方脚本和手动规则设置两种方式)。文章还包含连接验证、环境变量配置、常见故障排查(如权限问题、设备识别失败等)以及无线调试方法。特别强调了Linux特有的权限设置要点,帮助开发者快速搭建完整的Android调试环境。
在 Linux 系统下配置 ADB (Android Debug Bridge) 环境通常比 Windows 更简单,因为大多数发行版都通过包管理器直接支持。
以下是针对 Ubuntu/Debian 、Fedora/CentOS 和 Arch Linux 的详细安装与配置指南,包含权限设置(这是 Linux 下最容易出错的地方)。
第一步:安装 ADB 工具
根据你的 Linux 发行版选择对应的安装命令。
1. Ubuntu / Debian / Linux Mint / Kali
使用 apt 包管理器:
bash
sudo apt update
sudo apt install adb fastboot
2. Fedora / CentOS / RHEL
使用 dnf 或 yum:
bash
# Fedora
sudo dnf install android-tools
# CentOS/RHEL (可能需要启用 EPEL 源)
sudo yum install android-tools
3. Arch Linux / Manjaro / EndeavourOS
使用 pacman:
bash
sudo pacman -S android-tools
4. 通用方法 (手动下载最新版)
如果软件源中的版本太老,可以手动下载 Google 官方最新版:
bash
# 1. 下载
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip -O platform-tools.zip
# 2. 解压到用户目录
unzip platform-tools-latest-linux.zip -d ~
unzip platform-tools.zip -d ~
# 3. 配置环境变量 (永久生效)
echo 'export PATH=$HOME/platform-tools:$PATH' >> ~/.bashrc
# 如果是 zsh
echo 'export PATH=$HOME/platform-tools:$PATH' >> ~/.zshrc
# 4. 刷新配置
source ~/.bashrc # 或 source ~/.zshrc
第二步:配置 USB 权限规则 (关键步骤 ⚠️)
在 Linux 下,普通用户默认没有权限直接访问 USB 设备。如果不配置这一步,运行 adb devices 时会显示 ???????????? no permissions 或直接列表为空。
方法 A:使用官方提供的 udev 规则脚本 (推荐)
如果你是通过"通用方法"下载的官方包,里面包含了一个设置脚本:
bash
# 进入平台工具目录
cd ~/platform-tools
# 运行规则设置脚本 (需要 sudo)
sudo ./udev/setup_android_sdk_rules.sh
运行后需重新插拔手机或重启 udev 服务。
方法 B:手动创建规则文件 (适用于包管理器安装)
如果上述脚本不存在,请手动创建规则文件。
-
创建规则文件 :
bashsudo nano /etc/udev/rules.d/51-android.rules
-
填入以下内容 (涵盖主流厂商):
text# Google SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" # Samsung SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev" # Xiaomi SUBSYSTEM=="usb", ATTR{idVendor}=="2717", MODE="0666", GROUP="plugdev" # Huawei SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev" # OnePlus SUBSYSTEM=="usb", ATTR{idVendor}=="2a70", MODE="0666", GROUP="plugdev" # Sony SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev" # LG SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666", GROUP="plugdev" # Motorola SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev" # Generic SUBSYSTEM=="usb", ATTR{idVendor}=="*", MODE="0666", GROUP="plugdev"注:
MODE="0666"表示所有用户可读写,最简单粗暴;更安全的方式是设置GROUP="plugdev"并将用户加入该组。
-
重载规则并重启服务 :
bashsudo udevadm control --reload-rules sudo service udev restart # 或者 sudo systemctl restart systemd-udevd
-
将当前用户加入 plugdev 组 (如果上面用了 GROUP) :
bashsudo usermod -aG plugdev $USER注意 :加入组后需要注销并重新登录(或重启电脑)才能生效。
第三步:基础使用与验证
- 手机端设置 :
- 进入
设置->关于手机-> 连续点击版本号开启开发者模式。 - 进入
开发者选项-> 开启USB 调试。 - 用数据线连接电脑。
- 手机上弹出"允许 USB 调试?"时,勾选"始终允许"并确认。
- 进入
-
电脑端测试 :
bashadb devices-
成功输出 :
textList of devices attached XM12345678 device -
❌ 失败 (
no permissions) :说明 udev 规则未生效。解决:检查是否已重启登录,或尝试拔掉重插 USB 线。 -
❌ 失败 (列表为空):检查数据线(是否仅充电)、USB 接口或手机是否开启调试。
-
失败输出 (
no permissions) :- 检查是否执行了第二步。
- 尝试拔掉数据线重插。
- 运行
sudo adb devices测试。如果sudo能识别但普通用户不行,说明权限规则未生效或用户未重新登录组。
-
第四步:配置 Shell 环境变量 (可选)
如果你使用的是手动下载的压缩包,或者想添加自动补全功能:
-
编辑配置文件 :
bashnano ~/.bashrc # 如果是 zsh 则编辑 ~/.zshrc
-
添加路径 (仅手动安装时需要):
bashexport PATH=$PATH:$HOME/platform-tools
-
添加自动补全 (提升体验) :
Android SDK 通常自带补全脚本。bash# 查找补全脚本位置 (通常在 platform-tools 目录下) # 假设在 ~/platform-tools/completion source ~/platform-tools/completion/adb.bash将
source命令也加入~/.bashrc。
-
生效 :
bashsource ~/.bashrc
第五步:常用故障排查 (Linux 特有)
1. 提示 adb: command not found
- 确认已安装:
which adb。 - 如果是手动安装,确认
PATH已导出并执行了source。
2. 提示 no permissions (最常见)
- 原因:udev 规则未加载或用户组未更新。
- 解决 :
- 检查规则文件是否存在:
ls -l /etc/udev/rules.d/51-android.rules。 - 重新加载规则:
sudo udevadm trigger。 - 彻底重启电脑(不仅仅是注销),确保用户组权限生效。
- 更换 USB 端口(有时前端面板供电不足或控制器不同)。
- 检查规则文件是否存在:
3. 手机连接后没有任何反应
-
检查数据线是否仅支持充电。
-
检查手机连接模式:下拉通知栏,将 USB 模式从"仅充电"改为"文件传输 (MTP) "或"PTP"。有些手机在 PTP 模式下 ADB 识别率更高。
-
查看系统日志排查硬件识别问题:
bashdmesg | grep -i usb观察插入手机时的最新日志,看是否有设备被识别。
4. 多个用户或权限冲突
- 如果你同时使用了 Snap 或 Flatpak 安装的 Android Studio,它们可能有沙盒限制,无法访问宿主的 USB 设备。建议直接使用系统包管理器安装的
adb命令行工具。
5. ???????????? no permissions
- 原因:权限规则未加载或用户组未更新。
- 解决 :
- 运行
ls -l /dev/bus/usb/*/*查看设备权限,确认是否有读写权限。 - 重新执行
sudo usermod -aG plugdev $USER并彻底重启电脑。 - 临时测试:运行
sudo adb devices。如果 sudo 能识别,说明纯粹是权限问题。
- 运行
6. 设备管理器中看不到手机,或显示 QHSUSB_BULK
- 原因:手机进入了紧急下载模式(常见于高通芯片手机刷机失败),或驱动冲突。
- 解决 :
- 如果是正常连接:尝试更换 USB 端口(优先使用主板后置 USB 2.0 接口)。
- 如果是刷机变砖:需要安装
qpst或qfil工具进行救砖(Linux 下有开源替代工具edl)。
7. adb devices 列表为空,但手机在充电
- 排查步骤 :
- 数据线:换一根确认能传数据的线。
- USB 模式 :下拉手机通知栏,将 USB 模式从"仅充电"改为 "文件传输 (MTP)" 或 "PTP"。有些手机在 PTP 模式下 ADB 兼容性更好。
- 系统日志 :运行
dmesg -w然后插入手机,观察是否有 USB 设备识别日志。如果没有,可能是硬件接口问题。 - 冲突软件:某些手机管家类软件会独占 ADB 端口,关闭它们。
8. 无线调试 (WiFi) 连接失败
-
Android 11+ :支持纯无线配对。
bashadb pair 192.168.1.5:37829 # 输入手机显示的配对码 adb connect 192.168.1.5:5555 -
旧版本 :必须先有线连接执行
adb tcpip 5555才能切换无线。 -
防火墙 :检查 Linux 防火墙 (
ufw或firewalld) 是否拦截了 5555 端口。
第六步:无线调试 (无需 Root,无需特殊驱动)
在 Linux 上,一旦配置好有线连接,无线调试非常方便:
bash
# 1. 有线连接状态下,开启 TCP 模式
adb tcpip 5555
# 2. 拔掉数据线,获取手机 IP (在 WiFi 设置里看,例如 192.168.1.5)
adb connect 192.168.1.5:5555
# 3. 验证
adb devices
注:Android 11+ 支持纯无线配对,无需先插线,使用 adb pair 命令即可。
第七步:学习资源推荐
ADB 只是工具,深入理解需要结合 Android 系统原理和 Linux 基础。
1. 书籍推荐
- 入门实战 :
- 《第一行代码 Android (第3版)》 (郭霖 著):国内最经典的入门书,虽侧重应用开发,但对环境搭建和基础调试讲解清晰。
- 《Android 系统源码深入解析》:适合想深入理解 ADB 底层原理(如 JDWP, Transport 机制)的读者。
- 进阶/底层 :
- 《Android System Programming》 (O'Reilly):英文原版,深入讲解 Android 底层系统,包括 ADB 协议、Bootloader、Kernel 交互。
- 《嵌入式 Linux 与 Android 驱动开发》:适合需要定制 ROM 或编写底层驱动的开发者。
- Linux 基础 (ADB 在 Linux 下运行的基石):
- 《鸟哥的 Linux 私房菜》:经典中的经典,重点看"Shell 脚本"和"权限管理"章节。
- 《Linux 命令行与 Shell 脚本编程大全》:提升使用 ADB Shell 的效率。
2. 线上资源与文档
- 官方文档 :
- Android Developers - Command-line tools:最权威的 ADB 命令参考。
- Android Source Code (AOSP):查阅
system/core/adb源码,理解协议细节。
- 优质博客/社区 :
- XDA Developers:全球最大安卓玩机社区,寻找特定机型的解锁、TWRP 和 ADB 教程。
- CSDN / 掘金 / 知乎:搜索关键词"ADB 原理"、"Android 系统调试",有很多国内大佬的实战文章(注意筛选发布时间,优先看 2024-2026 年的)。
- GitHub 项目 :
openandroidinstaller:开源的安卓安装器,代码中包含了大量处理 ADB/Fastboot 边缘情况的逻辑,值得阅读。scrcpy:通过 ADB 控制安卓屏幕的神器,其源码展示了如何高效利用 ADB 传输数据。
3. 实践练习路线
- Level 1:在 Linux 上成功安装 ADB,连接手机,实现文件互传、安装 APK。
- Level 2 :熟练使用
adb shell,使用pm,am,dumpsys等命令管理系统。 - Level 3:编写 Shell 脚本,自动化完成批量安装、日志抓取、性能测试。
- Level 4:尝试解锁 Bootloader,刷入自定义 Recovery (TWRP),理解 Fastboot 协议。
- Level 5 :阅读 ADB 源码,理解
adb server,adb daemon,host之间的通信机制。
现在,你的 Linux 系统已经完全配置好 ADB 环境,可以进行开发、调试或刷机操作了!