問題說明:
buntun下USB連接配接Android手機後,使用adb devices 出現如下:
List of devices attached
???????????? no permissions
同時在DDMS中顯示裝置名也顯示????,也無法顯示程序名,無法檢視log。
一、工具介紹
android-sdk-linux_x86/tools下有一堆工具,今天要用的是:Android Debug Bridge,在android開發過程中,這個工具是使用得最多的。(縮寫adb,有點像gcc的gdb似的)
adb start-server – 實際上它會啟動一個 adb fork-server server
adb kill-server – kill掉
adb devices – 列出所有的裝置
二、設定usb權限
因為ubuntu這樣的系統都是預設以非root身份在運作的,要使用usb調試,需要sudo支援。
$ lsusb
Bus 005 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 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 413c:2106 Dell Computer Corp.
Bus 002 Device 002: ID 0461:4d81 Primax Electronics, Ltd
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 010: ID 0bb4:0c87 High Tech Computer Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
清單中,Bus 001 Device 010: ID 0bb4:0c87 High Tech Computer Corp. 這一行為htc手機的usb使用端口,記錄一下,id為0bb4(基于上所有的htc都是這個ID)。
$sudo vim /etc/udev/rules.d/70-android.rules
加入以下内容:
SUBSYSTEM==”usb”, SYSFS{idVendor}==”0bb4″, MODE=”0666″
PS:我是這樣加入的
#QualComm 9018
SUBSYSTEM=="usb", SYSFS{idVendor}=="05c6",SYMLINK+="android_adb_QualComm", MODE="0666"
#Foxconn 0489
SUBSYSTEM=="usb", SYSFS{idVendor}=="0489",SYMLINK+="android_adb_Foxconn", MODE="0666"
識别USB後會在/dev下出現相應 的軟連結檔案android_adb_QualComm或android_adb_Foxconn
運作指令,重新開機udev:
$sudo chmod a+rx /etc/udev/rules.d/70-android.rules
$sudo service udev restart
三、重新啟動adb server
(很重要)拔掉usb重新連上再執行:
sudo ./adb kill-server
./adb devices
./adb root (這一步很重要 )
四、使用usb進行調試
問題說明中的問題至此已經得到解決。
在DDMS選擇相應的devices,可以看到log了。。。。
五、知識積累
1. Gooogle udev
2.拔插usb,使用以下指令可以實時監視系統資訊
sudo tail -f /var/log/messages
六、參考
1. http://edu.codepub.com/2010/1229/28405.php
2. http://blog.csdn.net/zhenwenxian/archive/2010/09/23/5901350.aspx