android-ndk开发(4): linux开发机有线连接android设备

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。 例如:

bash 复制代码
⚡ 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, 增加:

bash 复制代码
SUBSYSTEM=="usb", ATTR{idVendor}=="2717", ATTRS{idProduct}=="ff48", MODE="0666"

保存文件, 并授予赋予读取权限:

bash 复制代码
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叫做"传输文件")方式,否则可能遇到报错:

bash 复制代码
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 命令。

相关推荐
baiyu339 天前
android-ndk开发(9): undefined reference to `__aarch64_ldadd4_acq_rel` 报错分析
android-ndk
baiyu3310 天前
android-ndk开发(3): 连接设备到开发机
android-ndk
baiyu3310 天前
android-ndk开发(10): use of undeclared identifier ‘pthread_getname_np‘
android-ndk
baiyu3312 天前
android-ndk开发(7): 从库文件反推ndk版本
android-ndk
baiyu3312 天前
android-ndk开发(2): macOS 安装 ndk
android-ndk
baiyu3313 天前
android-ndk开发(5): 编译运行 hello-world
android-ndk
baiyu3313 天前
android-ndk开发(1): 搭建环境
android-ndk