我正在从源代码构建 Android,以便安装我公司的自定义文件系统 (Datalight Reliance Nitro)。我使用 Ubuntu 12.04 PC 作为主机设备,使用 Nexus 7 (flo) 作为 Android 设备。我已关注说明用于设置主机系统,包括设置文件 /etc/udev/rules.d/51-android.rules。
我一直在构建 Android 4.4.3,ADB 运行正常,正如预期的那样。(无需 sudo 权限。)
然而,当我构建并安装 Android 5.1.1 时,ADB 突然抱怨:
$ adb devices
List of devices attached
???????????? no permissions
我尝试对 51-android.rules 文件进行进一步修改,但没有成功。以下CyanogenMod 关于该主题的说明,我最终在 sudo 上运行了 ADB 服务器,并且成功了。但我想知道为什么。Android 版本如何影响 ADB 所需的权限?或者我可能完全忽略了其他东西?
答案1
您需要将设备 ID 添加到规则中。通过 USB 插入设备。创建lsusb
并查找您的设备。您将收到类似
Bus 003 Device 048: ID 18d1:4ee7 Google Inc.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
然后在 /etc/udev/rules.d/51-android.rules 中添加与其他类似的行,但使用 idVendor(在此示例中为“18d1”)和 idProduct(此处为“4ee7”)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0600", OWNER="{same as others}"
然后
sudo udevadm control --reload-rules