Android 虛擬設備作為開發平台

為了使用 Android 虛擬裝置 (AVD), Android 模擬器支援圖形使用者介面 (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 汽車 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設定為另一個分支/標籤
    • 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. AVD 映像 zip 檔案以sdk-repo-linux-system-images為前綴,並在名為$ANDROID_PRODUCT_OUT的資料夾中建立。

建構 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

內核程式碼和配置位於以下位置:

物品價值
分支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中的汽車設備設定檔。
  • 對於 HMI 開發或原型設計,可以將多個裝置新增至相同 AVD 映像的檔案。
  • 將該檔案包含在[ABI]資料夾中的 OEM AVD 映像 zip 檔案中。例如,作為x86_64
  • 設備製造商還可以創建模擬器皮膚。例如,定義額外的硬體按鈕以獲得更高保真度的使用者體驗。這不僅對開發人員工作流程有用,而且對使用者體驗研究和審查等其他任務也有用。

建立 AVD 影像 XML 文件

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

  • 例如,請參閱 AAOS AVD 圖像 XML 檔案sys-img2-1.xml
  • 設備製造商可以為其目標用戶(使用榮譽系統)定義自己的 OEM AVD 許可協議,並獲得 Android 模擬器的許可。當包含此類許可證時,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
,

為了使用 Android 虛擬裝置 (AVD), Android 模擬器支援圖形使用者介面 (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 汽車 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設定為另一個分支/標籤
    • 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. AVD 映像 zip 檔案以sdk-repo-linux-system-images為前綴,並在名為$ANDROID_PRODUCT_OUT的資料夾中建立。

建構 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

內核程式碼和配置位於以下位置:

物品價值
分支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中的汽車設備設定檔。
  • 對於 HMI 開發或原型設計,可以將多個裝置新增至相同 AVD 映像的檔案。
  • 將該檔案包含在[ABI]資料夾中的 OEM AVD 映像 zip 檔案中。例如,作為x86_64
  • 設備製造商還可以創建模擬器皮膚。例如,定義額外的硬體按鈕以獲得更高保真度的使用者體驗。這不僅對開發人員工作流程有用,而且對使用者體驗研究和審查等其他任務也有用。

建立 AVD 影像 XML 文件

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

  • 例如,請參閱 AAOS AVD 圖像 XML 檔案sys-img2-1.xml
  • 設備製造商可以為其目標用戶(使用榮譽系統)定義自己的 OEM AVD 許可協議,並獲得 Android 模擬器的許可。當包含此類許可證時,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