如何在 Docker 中使用 Android Debug Bridge?

文章目錄

在 Docker container 中以 Android Debug Bridge(ADB)連接真實的 Android 手機除錯。

1. 撰寫 Dockerfile

前往 Android Studio 下載頁面下載「僅限指令列工具」,使用內含的 sdkmanager 下載其他 Android SDK 套件

必須下載 Android SDK Platform Tools 以使用 adb 命令列工具。

# Use an official Ubuntu as the base image
FROM ubuntu:20.04

# Install necessary tools and dependencies
RUN apt-get update && \
    apt-get install -y \
    unzip \
    wget

# Install JDK 8
RUN apt-get update && apt-get install -y openjdk-8-jdk

# Set up Android SDK
ENV ANDROID_HOME /usr/local/android-sdk
RUN mkdir -p ${ANDROID_HOME}/cmdline-tools && cd ${ANDROID_HOME}/cmdline-tools \
    && wget -q https://dl.google.com/android/repository/commandlinetools-linux-7302050_latest.zip -O commandlinetools.zip \
    && unzip commandlinetools.zip && rm commandlinetools.zip \
    && mv cmdline-tools tools

ENV PATH ${PATH}:${ANDROID_HOME}/cmdline-tools/tools/bin:${ANDROID_HOME}/platform-tools

# Accept licenses and install required Android SDK packages
RUN yes | sdkmanager --licenses \
    && sdkmanager "platform-tools" "platforms;android-30" "build-tools;30.0.3"

# Clean up to reduce image size
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# add-host
ENV ANDROID_ADB_SERVER_ADDRESS host.docker.internal

2. 建立 Image 並運行 Container

docker build -t <image> .
docker run --rm -it --add-host=host.docker.internal:host-gateway --name <container> <image>

3. 連接 Android 手機偵錯

  1. 開啟 Android 手機中的開發者模式。
    1. 在裝置上找到「版本號碼」。不同型號版本號碼位置可能有所不同,請參考「版本號碼」在裝置設定中的位置
    2. 點擊「版本號碼」7次,即可開啟開發人員選項。
    3. 進入開發人員選項打開 USB 偵錯功能。
  2. 以 USB 線連接電腦與手機。
  3. 進入 Container 中的命令列。
    docker exec -it <container> /bin/sh
    
  4. 以 adb 命令列工具連接手機。
    adb devices
    
  5. 手機若成功連接,就會顯示在裝置清單中。手機允許電腦偵錯後,attached 欄位將會變更為 device,此時即可在 Docker container 中以 USB 連接 Android 手機偵錯。 adb devices command list all usb connected device

參考資料