2017年6月10日 星期六

在「遠端電腦」開發,以連接「本地電腦」之 Android 裝置測試(修訂)

由於平常工作用的電腦有些舊了,但可以透過網路使用其它電腦的資源,就把它當「鍵盤、螢幕、滑鼠 (KVM)」來用,也就是「廋客戶端 (Thin-Client)」介面平台。最近想開發 Android 程式,之前有寫過〝在「遠端電腦」開發,以連接「本地電腦」之 Android 裝置測試〞一文,就參考那篇文章來設定,又覺得「本地電腦」應該是最少安裝才對,而且之前並不是在 Android Studio 的開發環境,就想再重新整理一次。設定目標如下:
  • 在「遠端電腦」執行 Android Studio 開發工具
  • 程式編譯後,可直接下載至接在「本地電腦」的 Android 裝置
  • 在「本地電腦」安裝最少量的程式
  • ADB (Android Debug Bridge) 在「本地電腦」執行
  • Android 裝置連接在「本地電腦」

一、在「本地電腦」的最小安裝、設定

1. 安裝、設定『命令列工具 (command line tools)』

要安裝 Android SDK 要先安裝『命令列工具 (command line tools)』,這些命令檔可以從官網下載,在 Linux 安裝用的檔案是 sdk-tools-linux-xxxxxxx.zip,這次下載的是 sdk-tools-linux-3859397.zip
  安裝的目錄就定在 /opt/android-sdk/,先在 /opt/ 下建立 android-sdk 這個目錄,再將剛才下載的檔案解壓縮在 /opt/android-sdk/ 目錄下。所下的命令為:
[root@Celeron-D ~]# mkdir /opt/android-sdk
[root@Celeron-D ~]# unzip sdk-tools-linux-3859397.zip -d /opt/android-sdk/
安裝後,可以檢查一下結果是否如下:
[root@Celeron-D ~]# ll /opt/android-sdk/
總計 4
drwxr-xr-x. 6 root root 4096 5月 14 15:09 tools
其中 tools 這個目錄下,就是安裝好的『命令列工具 (command line tools)』。
  若以「使用者」權限安裝在自己的「家目錄」,則上述命令修改為:
[SiB@Celeron-D ~]$ mkdir Android
[SiB@Celeron-D ~]$ mkdir Android/Sdk
[SiB@Celeron-D ~]$ unzip sdk-tools-linux-3859397.zip -d Android/Sdk/
接著,就可繼續安裝 Android SDK 了。

2. 安裝『Android Debug Bridge (ADB)』

Android Debug Bridge (adb) 這個程式,執行後可以做為『Android 裝置』和『Android Studio』間的橋樑。這個程式是屬於 platform-tools 這個套件,透過 sdkmanager 安裝的命令為
[root@Celeron-D ~]# /opt/android-sdk/tools/bin/sdkmanager platform-tools
若以「使用者」權限安裝在自己的「家目錄」,則上述命令修改為:
[SiB@Celeron-D ~]$ Android/Sdk/tools/bin/sdkmanager platform-tools
經上述命令安裝後,『本地電腦』的安裝工作就已經完成,接下來是設定。

3. 在各用戶的家目錄下建立 Android SDK 目錄、鏈結

如果前兩個步驟是以「使用者」權限,將sdk-tools 和 platform-tools 安裝在「使用者」的「家目錄」下,則這個步驟可以略過不做。

  由於前些日子已經發過類似文章,請讀者參考〝安裝 Android SDK 供『所有用戶』開發 Android APP〞的『步驟三』,在本文就不重覆了。

4. Android SDK 的更新

要更新 Android Debug Bridge (即 platform-tools 套件),其命令在 root 權限下為
[root@Celeron-D ~]# /opt/android-sdk/tools/bin/sdkmanager --update
若以「使用者」權限安裝在自己的「家目錄」,則上述命令修改為:
[SiB@Celeron-D ~]$ Android/Sdk/tools/bin/sdkmanager --update
當「遠端電腦」的 Android SDK 有更新時,才需要下這個命令。

5. 設定 USB rules為:

這個步驟在前文〝Linux 中,令 ADB 測得以 USB 連接的 Android 設備(F19)〞中已有詳細的說明,就請讀者自行參考不再贅述。

二、在「遠端電腦」開發 Android APP

開始開發 Android APP 時,其步驟在前文〝在「遠端電腦」開發,以連接「本地電腦」之 Android 裝置測試〞中有詳細說明,操作過程請讀者自行參考。

在「本地電腦」開啟 ADB (Android Debug Bridge)

不過有個地方要特別注意,在確認「本地電腦」(PC_2)可以偵測到以 USB 連接的 Android 裝置後,
[SiB@Celeron-D ~]$ ~/Android-SDK/platform-tools/adb devices
List of devices attached
HT02SLG01505  device
即可在「本地電腦」(PC_2)用 SSH 建立與「遠端電腦」間的逆向連接通道,
[SiB@Celeron ~]$ ssh 192.168.10.17 -p 5566 -R 5037:127.0.0.1:5037
SiB@192.168.10.17's password:
Warning: remote port forwarding failed for listen port 5037
Last login: Fri Feb 14 16:47:21 2014 from 192.168.10.13
若出現上例中的警示訊息,表示逆向連接通道建立失敗。「遠端電腦」的 Android Studio 將無法與「本地電腦」的 Android Debug Bridge (ADB) 溝通,也就無法用 ADB 所連結的 Android 裝置測試 Android APP 了。先在「遠端電腦」下這個命令
[SiB@Core-i7 ~]$ ~/Android/Sdk/platform-tools/adb kill-server
將「遠端電腦」上佔用 5037/TCP 埠號的 ADB 關閉。再在「本地電腦」連接命令
[SiB@Celeron ~]$ ssh 192.168.10.17 -p 5566 -R 5037:127.0.0.1:5037
SiB@192.168.10.17's password:
Last login: Fri Feb 14 16:47:21 2014 from 192.168.10.13
如上例未出現任何警示訊息,機表示成功建立逆向連接通道。
  接下來看幾個截圖說明:

在「遠端電腦」開啟 Android Studio

在「本地電腦」端先不要插上 Android 裝置,看 Android Studio 顯示什麼訊息。
在上圖中,所顯示的訊息是『No Connected Devices』,表示 Android Studio 尚未偵測到任何 Android 裝置。

:根據之後的結果推論,Android Studio 應該會定時偵測 Android 裝置。

在「本地電腦」端,插上 Android 裝置後

當 Android 裝置插上「本地電腦」後,在「本地電腦」的 Android Debug Bridge 偵測到 Android 裝置。若再收到 Android Studio 的詢問,即回報已插入的 Android 裝置。
在上圖中,「遠端電腦」的 Android Studio 所顯示的訊息表示,已偵測到一個 Android 裝置,其名稱為『FIH SH930W』,版本為『Android 4.1.1』,而使用的 API 為『API 16』。

已測試版本:

  • Fedora: 25, 24, 22

參考資料:

沒有留言:

張貼留言

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