linux下使用adb,找不到裝置的問題
在ubuntu下連線android裝置,雖然不用像windows那樣安裝驅動,然而卻會遇見一個錯誤:輸入adb shell,會提示insufficient permissions for device,輸入adb devices,裝置名稱會顯示 ????????等一大堆問號。
這是因為ubuntu預設是以非root使用者執行的。如果要使用adb 進行usb除錯,使用root賬號去執行相關命令固然可以進入adb shell,但是卻太麻煩。
另一種方法是配置udev的規則。方法如下:
1、輸入lsusb,檢視裝置的ID號。如我的輸出內容如下:
Bus 002 Device 008: ID 0bb4:0d02 High Tech Computer Corp.
Bus 008 Device 002: ID 046d:c52e Logitech, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 009 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
其中Bus 002 Device 008: ID 0bb4:0d02 High Tech Computer Corp.這一行就是我的HTC手機的USB使用埠了。記住中間的這兩個ID:0bb4和0d02。
2、sudo vi /etc/udev/rules.d/70-android.rules
如果沒有這個檔案,可以建立,然後加入以下內容
SUBSYSTEM=="usb",ATTRS{idVendor}=="0bb4",ATTRS{idProduct}=="0d02",MODE="0666"
3、修改許可權
sudo chmod a+rx /etc/udev/rules.d/70-android.rules
4、重啟udev 服務:
sudo service udev restart
5、重啟adb server。
重連裝置,然後執行sudo ./adb kill-server
adb start-server
然後看看adb devices是否已經已經正常顯示出裝置的名稱了。
PS:
最新修改方法,不用去看裝置的ID,直接在rules.d下增加一個檔案51-android.rules,內容為:
- SUBSYSTEM=="usb" ENV{DEVTYPE}=="usb_device", MODE="0666"