Android 虛擬設備作為開發平台

要使用 Android 虛擬設備 (AVD), Android 模擬器支持圖形用戶界面 (GUI) 和命令行界面 (CLI)。您可以為您的環境選擇最佳工作流程。

  • 創建和管理虛擬設備GUI 是為大多數應用程序開發人員和用戶提供的簡單工具。
  • 從命令行啟動模擬器為高級用戶和自動化提供了一種靈活的方式。例如,使用多個 AVD 或設置持續測試和持續集成。要開始使用,請參閱工具中的示例。

構建 AOSP 汽車 AVD

構建 AOSP Car AVD 的過程類似於為手機構建 AVD 圖像(例如aosp_car_x86_64 ):

  1. 要設置開發環境並識別分支,請參閱源代碼控制工具。然後查看下載源代碼
    ANDROID_BRANCH="android11-qpr2-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 aosp_car_x86_64-userdebug && m -j32
  3. 運行 AVD 映像(根據需要附加其他命令行啟動選項):
    emulator &

    例如:

    圖 1. Android 虛擬模擬器屏幕

    關於此過程的注意事項:

    • 因為構建過程與為物理設備構建 Android 所需的過程相同,所以請花一些時間下載源代碼然後構建它。
    • 要在其他分支上工作,請將$ANDROID_BRANCH設置為另一個分支/標籤
    • AVD 圖像,例如system.img是在$ANDROID_PRODUCT_OUT構建的。要了解有關關鍵圖像的更多信息,請參閱AVD 系統目錄
    • 請參閱README文件以了解如何使用 Android 樹中的預構建模擬器二進製文件來運行模擬器。

創建汽車 AVD

添加新車 AVD 幾乎與添加新設備相同。例如, 1660554創建一個新的avd_car AVD。

要創建汽車 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. sdk-repo-linux-system-images為前綴的 AVD 映像 zip 文件在名為$ANDROID_PRODUCT_OUT的文件夾中創建。

構建 AVD 內核

AVD 內核與其他 Android 內核相似,都是預構建的鏡像。通常,您可以使用每個 Android 版本中的標準金魚內核預構建映像。

要試驗內核更改:

  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

內核代碼和配置如下:

物品價值
分支common-android11-5.4 (在 Android 11 中使用)
顯現kernel/manifest/common-android11-5.4
通用模塊/虛擬設備kernel/common-modules/virtual-device/android11-5.4
核心kernel/common/android11-5.4

創建新的設備配置文件

要使用戶能夠在 Android Studio AVD Manager 中創建特定的 AVD,請參閱創建和管理虛擬設備。設備製造商可以通過使用 AVD 圖像中包含的devices.xml文件來定義自己的硬件規格,例如屏幕尺寸和 DPI。

  • 例如,請參閱 Automotive.xml 中的automotive.xml設備配置文件。
  • 對於 HMI 開發或原型設計,可以將多個設備添加到同一 AVD 圖像的文件中。
  • 將文件包含在[ABI]文件夾中的 OEM AVD 圖像 zip 文件中。例如,作為x86_64
  • 設備製造商還可以創建模擬器皮膚。例如,為更高保真度的用戶體驗定義額外的硬件按鈕。這不僅對開發人員工作流程有用,而且對其他任務(例如 UX 研究和審查)也有用。

創建 AVD 圖像 XML 文件

設備製造商可以創建一個 AVD Image XML 文件供 Android Studio 下載。

  • 例如,請參閱 AAOS AVD 圖像 XML 文件sys-img2-1.xml
  • 設備製造商可以為其目標用戶(使用榮譽系統)定義自己的 OEM AVD 許可協議,並獲得 Android Emulator 的許可。包含此類許可證時,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 文件名、大小和 shasum( tools中提供了示例 XML 文件)。

例如,要在 Google Cloud Storage上託管 AVD,請參閱創建存儲桶

要上傳 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 附加 URL 格式為: https://storage.googleapis.com/$BUCKET_NAME/oem-sys-img2-1.xml 。例如,如果 BUCKET_NAME 為 aaos-avd,則 URL 為: 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. 向目標用戶提供 URL。
  3. 可選)通過用戶名和密碼限制訪問。

或者,為了加快開發速度,將 AVD 下載到本地目錄:

  1. 將 XML 文件和 XML 文件中指定的所有工件保存到名為ADDON_DIR的文件夾(例如,所有 AVD 圖像 zip 文件)。
  2. 將 URL 指定為file://$ADDON_DIR/oem-sys-img2-1.xml