adb devices no permissions 解决办法

本文介绍了解决Android开发中遇到的ADB设备无权限问题的方法。通过lsusb命令找到设备信息,然后创建并编辑udev规则文件,赋予正确权限,重启udev服务,最后重新启动ADB服务即可解决问题。
adb devices no permissions 解决办法 (2012-10-28 21:50)


android
开发真机调试时,运行sudo ./adb devices 时,若有如下输出:




List of devices attached

???????????? no permissions

解决办法:

1. lsusb

以下是我的输出(当前连的是小米手机

Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 004 Device 002: ID 062a:0000 Creative Labs Optical mouse

Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 003 Device 002: ID 413c:2105 Dell Computer Corp. Model L100 Keyboard

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 001 Device 007: ID 18d1:9025 Google Inc.

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


2. 注意上面输出的蓝色一行:

Bus 001 Device 007: ID 18d1:9025 Google Inc.


3.
创建rules文件

sudo vi/etc/udev/rules.d/51-android.rules

在末尾增加
文件内容:

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="9025", MODE="0600"


4.
保存后给予权限:

sudo chmod a+rx/etc/udev/rules.d/51-android.rules

5. sudo /etc/init.d/udev restart
或者 sudo restartudev
6.sudo ./adb kill-server
7.sudo ./adb start-server
8.sudo ./adb devices


当在Linux系统中使用ADB(Android Debug Bridge),如果遇到 `no permissions (missing udev rules? user is in the plugdev group)` 错误,这通常表示当前用户没有足够的权限与设备通信。以下是解决此问题的详细步骤和相关配置。 ### 检查用户是否属于 `plugdev` 组 确保当前用户已经加入 `plugdev` 组,因为这是ADB推荐的组权限管理方式。可以通过以下命令检查: ```bash groups ``` 如果输出中没有包含 `plugdev`,则需要将用户添加到该组: ```bash sudo usermod -aG plugdev $USER ``` 执行完上述命令后,请重新登录或重启系统以使更改生效。 ### 配置udev规则 为了确保ADB能够正确识别并赋予设备访问权限,需要创建或更新udev规则文件。具体步骤如下: 1. **获取设备的Vendor ID** 使用 `lsusb` 命令查看连接的USB设备信息: ```bash lsusb ``` 输出示例: ``` Bus 002 Device 003: ID 18d1:4ee7 Google Inc. ``` 其中 `18d1` 是Vendor ID,`4ee7` 是Product ID。 2. **创建udev规则文件** 创建一个名为 `51-android.rules` 的规则文件,并将其放置在 `/etc/udev/rules.d/` 目录下: ```bash sudo nano /etc/udev/rules.d/51-android.rules ``` 在文件中添加以下内容(请根据实际设备替换Vendor ID): ```bash SUBSYSTEM=="usb", ATTR{idVendor}=="<VENDOR_ID>", MODE="0666", GROUP="plugdev" ``` 例如,对于Google设备(Vendor ID为 `18d1`),应写入: ```bash SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" ``` 3. **应用新的udev规则** 保存并关闭文件后,重新加载udev规则并重启ADB服务: ```bash sudo udevadm control --reload-rules adb kill-server adb start-server ``` 4. **验证设备状态** 最后再次运行 `adb devices` 命令以确认设备已被正确识别: ```bash adb devices ``` 如果一切正常,设备应该会显示为在线状态,而不是提示“no permissions”。 ### 示例:完整操作流程 以下是一个完整的操作流程示例,假设设备的Vendor ID为 `18d1`: ```bash # 检查用户是否属于plugdev组 groups # 如果没有plugdev组,则添加用户到plugdev组 sudo usermod -aG plugdev $USER # 获取设备的Vendor ID lsusb # 创建udev规则文件 echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/51-android.rules # 应用新的udev规则 sudo udevadm control --reload-rules adb kill-server adb start-server # 验证设备状态 adb devices ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值