使用 Android Emulator 設定 Proxy

在 Android 模擬器上,您可以使用 Proxy 偵錯應用程式流量,或從公司防火牆後方存取網際網路。模擬器提供兩種不同的 Proxy 機制,可支援這些不同的用途:Android 系統 Proxy 和模擬器 Proxy。

選擇合適的 Proxy

設定 Proxy 前,請務必先瞭解這兩種用途。「Android 系統 Proxy」用於檢查應用程式流量,而「模擬器 Proxy」則用於規避網路限制。這兩個 Proxy 互斥,一次只能啟用一個。

功能 Android 系統 Proxy 模擬器 Proxy
主要用途 應用程式偵錯 防火牆繞過
作業層 網路層 應用程式層
設定 Android 系統 Wi-Fi 設定使用者介面 模擬器擴充控制項使用者介面或
-http-proxy 標記。
HTTPS 偵錯 - 允許 Charles Proxy 等工具在安裝憑證時攔截流量。

- 建立 TCP 通道,防止
SSL 檢查。
處理非 HTTP/HTTPS
流量
- 主要只處理 HTTP 和
HTTPS 流量。
:轉送所有 TCP 流量。

應用實例 1:使用 Android 系統 Proxy 進行應用程式偵錯

如要偵錯應用程式的網路流量 (例如使用 Charles Proxy 等工具檢查 HTTPS 要求),請使用 Android 系統 Proxy

這個 Proxy 會在 Android OS 的應用程式層運作。這項功能可讓偵錯工具攔截及檢查流量,但您必須在模擬裝置上安裝必要的安全憑證。

設定 Android 系統 Proxy

設定

您可以透過下列兩種方式設定 Android 系統 Proxy:

  1. 手動設定:在模擬器中,依序前往「設定」>「網路與網際網路」>「Wi-Fi」,選取您的網路,然後手動輸入 Proxy 設定。
  2. 自動設定:您可以透過程式輔助方式設定 Android 系統 Proxy。方法是建立使用 UI 自動化架構 (例如 UI Automator) 的插樁測試,開啟 Android 設定應用程式並套用 Proxy 設定,不必手動介入。

使用案例 2:透過模擬器 Proxy 繞過公司防火牆

在許多公司網路中,網路管理員會拒絕與網際網路直接連線,因此必須透過特定 Proxy 進行。如要從這類受限網路存取外部資源,請使用 Emulator Proxy

這項機制會在較低的網路層級運作,並透過指定的 Proxy 轉送所有模擬裝置的 TCP 流量,因此非常適合用於防火牆遍歷。模擬器會公開重寫來自虛擬裝置的 HTTP 要求,然後再傳送至 Proxy,才能順利執行。

設定

Android Studio 內使用模擬器時,可以透過 Android Studio 選單 (Settings > Appearance & Behavior > System Settings > HTTP Proxy) 中的設定檔設定 Proxy。詳情請參閱 Android Studio 說明文件中的「設定 Android Studio Proxy」。

如果將模擬器做為獨立工具使用 (在 Android Studio 外部),可以透過下列任一方法設定模擬器 Proxy:

  1. 指令列標記:透過指令列啟動模擬器,並加上 -http-proxy <proxy> 標記。<proxy> 資訊可指定為 http://<machineName>:<port>http://<username>:<password>@<machineName>:<port> 格式。

    emulator -http-proxy http://<machineName>:<port>
    

    emulator @MyAvd -http-proxy http://<username>:<password>@<machineName>:<port>
    
  2. 環境變數:使用 Proxy 設定定義 http_proxy 環境變數。模擬器會在啟動時檢查這個變數,並自動使用該值 (如已定義)。

  3. 擴充控制項:開啟模擬器的「擴充控制項」,依序前往「設定」>「Proxy」,然後手動輸入 HTTP Proxy 設定。模擬器會儲存裝置的這些設定,並在重新啟動時還原。

    設定模擬器 Proxy

模擬器 Proxy 在網路層運作,這項功能會透過 TCP 建立 HTTPS 流量通道,但流量轉送時不會解密,因此無法檢查 HTTPS 流量。模擬器 Proxy 不支援 UDP 重新導向。

與 Android Studio 互動

Android Studio 有專屬的 Proxy 設定對話方塊,可供下載更新和程式庫。從 Android Studio 啟動模擬器時,系統會讀取 IDE 的 Proxy 設定一次,以填入「模擬器 Proxy」設定。不過,這些設定不會影響 Android 系統 Proxy