1. 程式人生 > >linux下使用adb,找不到裝置的問題

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,內容為:

  1. SUBSYSTEM=="usb" ENV{DEVTYPE}=="usb_device", MODE="0666"  
目前通用於所有android裝置。儲存後如上面的步驟修改許可權,重啟udev和adb,然後重新插上手機就可以了。