2014年2月12日 星期三

Linux 中,令 ADB 測得以 USB 連接的 Android 設備(F19)

在 Linux 中使用 Android SDK 開發 App 時,遇到將 Android 手機或平板透過 USB 接在電腦,但是電腦卻不能自動偵測到。在前文『Linux 中,令 ADB 測得以 USB 連接的 Android 設備』中的步驟,在電腦更新作業系統後,有些部份已經不再適用。
  另外,有些新增加的 Android 裝置之 USB 辨認碼,也一併整理一下。只要依照下面這幾個步驟,就可以自動偵測了:

一、編輯「設備管理器」的規則設定

切換成 root 身份,並用熟悉的『文字編輯器』編輯在目錄路俓『/etc/udev/rules.d/』下的規則設定檔『52-android.rules』,以「終端機」用圖形化編輯的操作為例,在『GNOME 桌面環境』下用
[root@Celeron-D ~]# gedit /etc/udev/rules.d/52-android.rules
在『MATE 桌面環境』下則用
[root@Celeron-D ~]# pluma /etc/udev/rules.d/52-android.rules
啟動『文字編輯器』。

:第一次設定時,該檔案應該是不存在。如果曾經設定過,可能為其它檔名。

  接著再將下面文字貼入
# Company USB Vendor ID
# ASUS 0b05
# HTC 0bb4
# Motorola 22b8
# Samsung 04e8
# Sony Ericsson 0fce
SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", GROUP="plugdev", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", GROUP="plugdev", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", GROUP="plugdev", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", GROUP="plugdev", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", GROUP="plugdev", MODE="0666"
編輯完成,將檔案儲存。

註一:以上開頭為『SUBSYSTEM』的五列設定文字,中間並沒換列。
註二:若讀者的 Android 裝置的 Vendor ID(廠商識別名)與上例的設定不同,Linux 將無法識別它。下表是方便讀者查詢,將你的 Android 裝置的 Vendor ID 替換規則設定檔的設定列。最新的列表請參考 Android 官網所公佈之對應 Vendor ID
Acer0502ASUS0b05Dell413cFoxconn0489
Fujitsu04c5Fujitsu Toshiba04c5Garmin-Asus091eGoogle18d1
Haier201EHisense109bHTC0bb4Huawei12d1
K-Touch24e3KT Tech2116Kyocera0482Lenovo17ef
LG1004Motorola22b8MTK0e8dNEC0409
Nook2080Nvidia0955OTGV2257Pantech10a9
Pegatron1d4dPhilips0471PMC-Sierra04daQualcomm05c6
SK Telesys1f53Samsung04e8Sharp04ddSony054c
Sony Ericsson0fceTeleepoch2340Toshiba0930ZTE19d2
註三:若 Android 官網仍查詢不到,可以在「終端機」中用『lsusb』命令,看到所有 USB 裝置的列表
[SiB@Celeron-D ~]$ lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[SiB@Celeron-D ~]$ lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 005: ID 04e8:6866 Samsung Electronics Co., Ltd
第一個命令是在 Android 裝置插入前,第二個命令則在插入之後。讀者會發現第二個命令的結果中,USB 裝置列表多了一個裝置,這即是你的 Android 裝置之 USB 資訊,在 ID 的前四碼正是該裝置的 Vendor ID。

二、重新載入「設備管理器」測試機制之規則設定

這時候「設備管理器」的自動偵測機制仍然是舊的設定,要重新載入識別規則後,剛才的設定才會生效。
[root@Celeron-D ~]# udevadm control --reload-rules
執行成功後,就可以切換回原來的使用者身份。

三、開啟 Android 裝置的 USB 偵錯模式

在用 ADB 偵測 Android 裝置前,要先開啟 Android 裝置上的『USB 偵錯』模式,
如上圖所示,則 ADB 就可偵測到這個 Android 裝置了。

:開啟 Android 裝置的偵錯模式,在不同的裝置、版本中,可能其設定位置會不同。一般而言,多安排在『設定』程式的『應用程式』或『開發』選項之下。

四、測試連接偵測功能

重新拔插 Android 手機或平板的 USB 插頭一次,這時 Linux 應該可以正常偵測到 Android 設備了。再用 adb 測試一下,看看剛才的設定是否成功:
[SiB@Celeron-D ~]$ Android-SDK/platform-tools/adb devices
List of devices attached
000990c55a666f device
注意:『 adb 』的路徑會因作業系統、或 SDK 版本的不同而不同,請耐心找一下。

已測試版本:

  • Fedora: 19, 20
  • Android SDK: 22.3

參考資料:

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)