在Android平台下做開發,adb總是需要使用到的,同時,因為Linux沒有Windows這樣操作傻瓜化,有些東西還是需要自行設置的,否則將會連接不上。
關於這些內容,google也有一定的描述,可以參考http://developer.android.com/tools/device.html
這個問題以前一直沒有重視,我的三星GT5700手機和華為T9200手機連接一直很順利,adb devices每次都能正常看到設備,不過換到展訊的6820平台時發現死活找不到設備,這下郁悶了,花了一些時間搜索資料驗證,最後終於成功了,下面總結了一下adb設備驅動的安裝經驗,希望對Ubuntu系統下調試android設備的同學有個幫助。
1. 確保設備已經連接正常
首先需要取得root權限,這個沒啥說的。然後用lsusb命令列一下所有USB設備,如下圖所示:
這裡可以比較清楚的看到有一個設備,ID號是1782:5d04,如果你的系統上有很多USB設備連接你一時看不清楚,可以插拔設備打出ID號對比一下,確保找到這個ID。
這個ID的前面實際上是廠商編號,後面是產品編號。廠商編號是唯一的,比如htc是0x0bb4,Samsung是0x04e8,Qualcomm是0x05c6,華為則是0x12d1。這裡我們看見的0x1782則是展訊的廠商號。
2. 在/etc/udev/rules.d/下創建一個配置文件
這個配置文件將在設備連接時被查詢,比如51-android.rules。
編輯內容如下:
SUBSYSTEM=="usb",ATTR(idVendor)=="1782", MODE="0666", GROUP="plugdev"
這裡解釋一下這幾個選項,
SUBSYSTEM是標識這是一個USB設備,
ATTR(idVendor)r這一項就是描述廠商的ID號了,
MODE描述的是訪問權限
GROUP描述成即插即用,不過這裡用處不大,寫不寫都可以
其實還應該寫一個OWNER項,用來指定是哪個用戶有權限操作,如果不寫則是root(不是所有用戶都可以訪問),這點需要注意一下,有時候有些同學會在這裡被卡住。因為我個人一直使用root權限操作的,所以這裡就省略了。
還有一點,有些時候我們會看到SYSFS{"High Tech Computer Corp."}這樣的一個項,這個參數也是設備廠商的意思,貌似以前的官方就是這麼寫的,當初因為HTC幫Google做的手機,所以一開始用例上寫的是“High Tech Computer Corp.”,不過現在官方的示例已經改成ATTR(idVendor)了。
3. 給這個文件設置權限
chmod a+r/etc/udev/rules.d/51-android.rules
4. 重啟udev
/etc/init.d/udev restart
5. 增加adb_usb.ini文件
在~/.android目錄下增加一個adb_usb.ini文件,這裡的路徑實際上是各個用戶的根目錄,如果你需要切換用戶的話,記得每個用戶下都需要增加這個東東。
adb_usb.ini文件中寫入廠商ID號,和前面不同的是這裡需要寫上0x的前綴,比如我的展訊手機就是寫0x1782
網上搜過不少資料,這一步有些資料上都沒提到,估計他們是沒有用這步就成功了,但我個人死活不成功,直到增加了這個文件才行,卡了不少時候。
6. 重啟adb
adb kill-server
adb start-server
adb devices
這時應該可以看見設備了,下面就可以正常使用adb了