Android 虛擬裝置做為開發平台

如要使用 Android 虛擬裝置 (AVD),Android Emulator 支援圖形使用者介面 (GUI) 和指令列介面 (CLI)。您可為環境選取最佳工作流程。

  • 建立及管理虛擬裝置 GUI 是為大多數應用程式開發人員和使用者提供的簡單工具。
  • 透過指令列啟動模擬器 可為進階使用者和自動化作業提供彈性方式。例如使用多個 AVD 或設定持續測試和持續整合。如要開始使用,請參閱「工具」中的範例。

使用預先建構的 AOSP Car AVD

如要快速啟動並使用預先建構的 AOSP Car AVD 進行測試,請使用開放原始碼指令碼,從 ci.android.com 下載並啟動模擬器版本。這個指令碼已在 macOS 和 Linux 上測試過。

您必須使用 Curl 才能使用這個指令碼。

如要執行指令碼,請按照下列指示操作:

  1. 假設您使用 launch_emu.sh 做為本機檔案名稱,請將 launch_emu.sh 指令碼內容複製到本機檔案。
  2. 將本機指令碼設為可執行狀態。例如,執行 chmod +x ./launch_emu.sh
  3. 請使用 ./launch_emu.sh -h 執行指令碼,查看可用的選項。
  4. ci.android.com 上,前往 aosp-main-throttled 分支,然後選取 sdk_car_x86_64 為綠色的近期版本。例如 11370359。如果沒有看到建構資訊,請登出 Google 帳戶,然後再試一次。
  5. 下載並安裝與建構 ID 相關的模擬器二進位檔。例如:./launch_emu.sh -i -a 11370359
  6. 完成後,您可以使用 ./launch_emu.sh 啟動已下載及安裝的模擬器 (請勿使用 -i-a 選項)。
  7. 如要下載及安裝其他版本 ID,請執行 ./launch_emu.sh -c 來清除工作區,然後重複執行上述步驟 4 和 5。

如要在啟動模擬器時指定 Android 模擬器指令列啟動選項,請使用 -v 選項。例如:

  ./launch_emu.sh -v “-cores 4 -memory 6144 -no-snapshot"

建構 AOSP Car AVD

建構 AOSP Car AVD 的程序與建構手機 AVD 映像檔 (例如 aosp_car_x86_64) 類似:

  1. 如要設定開發環境並識別分支,請參閱「來源控管工具」一文。然後參閱「下載原始碼」一文:
    ANDROID_BRANCH="android12L-release"
    REPO_URL="https://android.googlesource.com/platform/manifest"
    mkdir $ANDROID_BRANCH && cd $ANDROID_BRANCH && repo init -u $REPO_URL -b $ANDROID_BRANCH --partial-clone && repo sync -c -j8
  2. 建構 AVD 映像檔:
    . build/envsetup.sh && lunch sdk_car_x86_64-userdebug && m -j32
  3. 執行 AVD 映像檔 (視需要附加其他指令列啟動選項):
    emulator &

    例如:

    圖 1. Android 虛擬模擬器畫面

    這項程序的注意事項:

    • 由於建構程序與為實體裝置建構 Android 所需的程序相同,請留出一些時間下載來源,然後進行建構。
    • 如要處理其他分支,請將 $ANDROID_BRANCH 設為其他分支/標記
    • system.img 等 AVD 映像檔會在 $ANDROID_PRODUCT_OUT 建構。如要進一步瞭解關鍵圖片,請參閱「AVD 系統目錄」。
    • 請參閱 README 檔案,瞭解如何使用 Android 樹狀結構中的預先建構模擬器二進位檔來執行模擬器。

建立 Car AVD

新增汽車 AVD 的步驟幾乎與新增裝置相同。例如 1660554 會建立新的 avd_car AVD。

如要建立 Car AVD,請按照下列步驟操作:

  1. 視需要建立公司和裝置資料夾。本範例使用 $ANDROID_BUILD_TOP/device/google_car/avd_car
  2. 建立產品 Makefile (avd_car.mk),定義建構 AVD 的方式。
  3. 建立裝置資料夾 avd_car_device,用於包含 BoardConfig.mksource.properties
  4. 將新的 makefile 和新的 lunch 選項新增至 AndroidProducts.mk
  5. 如要建構及執行新的 avd_car AVD,請按照下列步驟操作:
    . build/envsetup.sh && lunch acar-userdebug && m -j32 && emulator &
現在您已可在新的 AVD 上,為大部分 HMI 和應用程式功能建立原型。

封裝 AVD 圖片 ZIP 檔案

您可以將 AVD 封裝並與他人共用,或在其他電腦上使用。使用 emu_img_zip.mk 產生 AVD 圖像 ZIP 檔案:

  1. 建構 AVD 後,將 emu_img_zip 設為目標:
    m emu_img_zip
  2. 系統會在名為 $ANDROID_PRODUCT_OUT 的資料夾中建立 AVD 圖片 ZIP 檔案,檔案名稱前置字串為 sdk-repo-linux-system-images

建構 AVD 核心

AVD 核心與其他 Android 核心相似,都是預先建構的映像檔。通常,您可以使用各個 Android 版本的標準 goldfish 核心預先建構映像檔。

如要嘗試核心變更,請按照下列步驟操作:

  1. 執行下列一系列指令:
    mkdir goldfish-kernel-54
    cd goldfish-kernel-54
    repo init -u https://android.googlesource.com/kernel/manifest -b
    common-android11-5.4
    repo sync
    BUILD_CONFIG=common/build.config.gki.x86_64 build/build.sh
    BUILD_CONFIG=common-modules/virtual-device/build.config.goldfish.x86_64
    build/build.sh
    ls -l ./out/android11-5.4/dist/
  2. 根據 AVD makefile 取代程式碼庫中的核心二進位檔。舉例來說,x86_64-vendor.mk 包含 x86_64-kernel.mk

核心程式碼和設定檔位於以下位置:

產品
Branch common-android11-5.4 (在 Android 11 中使用)
命運航班 kernel/manifest/common-android11-5.4
common-modules/virtual-device kernel/common-modules/virtual-device/android11-5.4
核心 kernel/common/android11-5.4

建立新的裝置設定檔

如要讓使用者在 Android Studio AVD Manager 中建立特定 AVD,請參閱「建立及管理虛擬裝置」。裝置製造商可以使用 AVD 映像檔中的 devices.xml 檔案,定義自己的硬體規格,例如螢幕大小和 DPI。

  • 例如,請參閱 automotive.xml 中的汽車裝置設定檔。
  • 針對 HMI 開發或原型設計,您可以為相同的 AVD 映像檔新增多個裝置。
  • 將檔案加入 [ABI] 資料夾中的 OEM AVD 映像檔 ZIP 檔案中。例如 x86_64
  • 裝置製造商也可以建立模擬器外觀。例如,定義其他硬體按鈕以提供更高保真度的使用者體驗。這不僅適用於開發人員工作流程,也適用於其他工作,例如使用者體驗研究和審查。

建立 AVD 映像檔 XML 檔案

裝置製造商可以建立 AVD 映像檔 XML 檔案,供 Android Studio 下載。

  • 例如,請參閱 AAOS AVD 映像檔 XML 檔案 sys-img2-1.xml
  • 裝置製造商可以使用 Android Emulator 授權,為目標使用者定義自己的 OEM AVD 授權協議 (採用榮譽系統)。當 Android Studio 納入這類授權時,會取得使用者同意。

如要建立圖片,請按照下列步驟操作:

  1. 準備 AVD 映像檔 ZIP 檔案。
  2. 解壓縮 ${ANDROID_PRODUCT_OUT}/sdk-repo-linux-system-images-*.zip
  3. devices.xml 新增至 x86_64 資料夾,然後將檔案壓縮為 ZIP 檔案。例如 oem_avd_img_x86_64.zip
  4. 更新 oem-sys-img2-1.xml
  5. 更新 ZIP 檔案名稱、大小和 SHA1 總和 ( tools 中提供 XML 檔案範例)。

舉例來說,如要在 Google Cloud Storage 上代管 AVD,請參閱「建立 Storage 值區」一文。

如要上傳 AVD 並開放公開存取,請參閱「將資料設為公開」一文:

BUCKET_NAME="aaos-avd"
gsutil mb gs://$BUCKET_NAME
gsutil cp oem_avd_img_x86_64.zip gs://$BUCKET_NAME
gsutil cp oem-sys-img2-1.xml gs://$BUCKET_NAME
gsutil iam ch allUsers:objectViewer gs://$BUCKET_NAME

AVD 映像檔 SDK 外掛程式網址格式如下:https://storage.googleapis.com/$BUCKET_NAME/oem-sys-img2-1.xml。舉例來說,如果 BUCKET_NAME 是 aaos-avd,網址會是 https://storage.googleapis.com/aaos-avd/oem-sys-img2-1.xml

與 Android Studio 使用者分享 AVD 映像檔

為了讓使用者能夠下載 AVD 映像檔,並透過 Android Studio 使用 AVD,您可以提供 SDK 外掛程式 XML 檔案。詳情請參閱「更新 IDE 和 SDK 工具」。

如何從網路下載 AVD:

  1. 在伺服器上代管圖片 ZIP 檔案和 XML 檔案。
  2. 將網址提供給目標使用者。
  3. (選用) 使用者名稱和密碼限制存取權。

或者,如要加快開發速度,請將 AVD 下載到本機目錄:

  1. 將 XML 檔案和 XML 檔案中指定的所有構件,儲存至名為 ADDON_DIR 的資料夾 (例如所有 AVD 圖片 ZIP 檔案)。
  2. 請將網址指定為 file://$ADDON_DIR/oem-sys-img2-1.xml