引言
本文详细介绍了在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 包管理器:
sudo apt update sudo apt install adb fastboot
2. fedora / centos / rhel
使用 dnf 或 yum:
# fedora sudo dnf install android-tools # centos/rhel (可能需要启用 epel 源) sudo yum install android-tools
3. arch linux / manjaro / endeavouros
使用 pacman:
sudo pacman -s android-tools
4. 通用方法 (手动下载最新版)
如果软件源中的版本太老,可以手动下载 google 官方最新版:
# 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 规则脚本 (推荐)
如果你是通过“通用方法”下载的官方包,里面包含了一个设置脚本:
# 进入平台工具目录 cd ~/platform-tools # 运行规则设置脚本 (需要 sudo) sudo ./udev/setup_android_sdk_rules.sh
运行后需重新插拔手机或重启 udev 服务。
方法 b:手动创建规则文件 (适用于包管理器安装)
如果上述脚本不存在,请手动创建规则文件。
创建规则文件:
sudo nano /etc/udev/rules.d/51-android.rules
填入以下内容 (涵盖主流厂商):
# 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" 并将用户加入该组。
重载规则并重启服务:
sudo udevadm control --reload-rules sudo service udev restart # 或者 sudo systemctl restart systemd-udevd
将当前用户加入 plugdev 组 (如果上面用了 group):
sudo usermod -ag plugdev $user
注意:加入组后需要注销并重新登录(或重启电脑)才能生效。
第三步:基础使用与验证
手机端设置:
- 进入
设置->关于手机-> 连续点击版本号开启开发者模式。 - 进入
开发者选项-> 开启usb 调试。 - 用数据线连接电脑。
- 手机上弹出“允许 usb 调试?”时,勾选“始终允许”并确认。
电脑端测试:
adb devices
成功输出:
list of devices attached xm12345678 device
- ❌ 失败 (
no permissions):说明 udev 规则未生效。解决:检查是否已重启登录,或尝试拔掉重插 usb 线。 - ❌ 失败 (列表为空):检查数据线(是否仅充电)、usb 接口或手机是否开启调试。
- 失败输出 (
no permissions):- 检查是否执行了第二步。
- 尝试拔掉数据线重插。
- 运行
sudo adb devices测试。如果sudo能识别但普通用户不行,说明权限规则未生效或用户未重新登录组。
第四步:配置 shell 环境变量 (可选)
如果你使用的是手动下载的压缩包,或者想添加自动补全功能:
编辑配置文件:
nano ~/.bashrc # 如果是 zsh 则编辑 ~/.zshrc
添加路径 (仅手动安装时需要):
export path=$path:$home/platform-tools
添加自动补全 (提升体验):
android sdk 通常自带补全脚本。
# 查找补全脚本位置 (通常在 platform-tools 目录下) # 假设在 ~/platform-tools/completion source ~/platform-tools/completion/adb.bash
将 source 命令也加入 ~/.bashrc。
生效:
source ~/.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 识别率更高。
- 查看系统日志排查硬件识别问题:
dmesg | 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+:支持纯无线配对。
adb pair 192.168.1.5:37829 # 输入手机显示的配对码 adb connect 192.168.1.5:5555
- 旧版本:必须先有线连接执行
adb tcpip 5555才能切换无线。 - 防火墙:检查 linux 防火墙 (
ufw或firewalld) 是否拦截了 5555 端口。
第六步:无线调试 (无需 root,无需特殊驱动)
在 linux 上,一旦配置好有线连接,无线调试非常方便:
# 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 命令即可。
现在,你的 linux 系统已经完全配置好 adb 环境,可以进行开发、调试或刷机操作了!
以上就是linux系统下安装和配置adb环境的完整步骤的详细内容,更多关于linux安装和配置adb环境的资料请关注代码网其它相关文章!
发表评论