android-ndk开发(4): linux开发机有线连接android设备
2025/05/05
1. 概要
linux 系统, 例如最常见的 ubuntu, 在通过 USB 线把 android 设备连接到开发机上时, 仅仅是 ”物理上的连接”。 这时候 adb 是无法识别到 android 设备的。 需要配置 udev 规则才能发现设备。
要想真的让系统识别到 android 设备,
2. 添加 udev 规则的步骤
2.1 获取 idVendor 和 idProduct 信息
在开发机上, 分别在插入、不插入手机usb线的情况下,执行 lsusb 命令来获得 idVendor 和 idProduct。 例如:
⚡ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 046d:c077 Logitech, Inc. M105 Optical Mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
其中ID后的xxxx:yyyy分别是idVendor和idProduct,在udev规则文件中需要他俩。
2.2 添加udev规则
根据上一步查找的idVendor和idProduct,添入新建的规则文件中:
vim /etc/udev/rules.d/51-android.rules
, 增加:
SUBSYSTEM=="usb", ATTR{idVendor}=="2717", ATTRS{idProduct}=="ff48", MODE="0666"
保存文件, 并授予赋予读取权限:
chmod a+r /etc/udev/rules.d/51-android.rules
2.3 让 udev 规则生效
可尝试 sudo systemctl restart udev
, 或重新插拔设备。 若确实长时间没反应(1分钟以上), 可考虑重启主机。
通常很快就能查询到设备 (adb devices
).
2.4 设备上的设定
-
需要开启USB调试(设置->…->开启“开发者选项”,并且开启”USB调试“和”USB安装“
-
需要选择MTP连接(新版Android叫做“传输文件”)方式,否则可能遇到报错:
adb: insufficient permissions for device: user in plugdev group; are your udev rules wrong?
参考: https://stackoverflow.com/questions/28704636/insufficient-permissions-for-device-in-android-studio-workspace-running-in-opens
3. 总结
本篇给出了 Linux 开发机上, 配置 udev 规则的步骤和注意事项, 从而让后续通过 USB 线连接设备时, 能自动识别设备, 顺畅的使用 adb 命令。