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 命令。