Android Emulator の仮想デバイスを使用する

Android Emulator を使用して Android デバイスのエミュレーションを作成し、独自のカスタム Android システム イメージを実行できます。また、Android Emulator のエミュレーションにはマルチディスプレイのサポートを追加できます。

Android Emulator のアーキテクチャ

Android Emulator は、Android Virtual Device(AVD)と呼ばれる仮想マシンで、Android オペレーティング システムを実行します。各 AVD には完全な Android ソフトウェア スタックが含まれているため、物理デバイス上にあるかのようにシステムが動作します。図 1 は、Android Emulator のアーキテクチャの概念図です。エミュレータについて詳しくは、Android Emulator 上でアプリを実行するを参照してください。

Android Emulator のアーキテクチャ

図 1. Android Emulator のアーキテクチャ

AVD イメージをビルドする

各 AVD には、AVD で動作する Android システム イメージが含まれています。AVD Manager には、複数のシステム イメージが含まれています。ソースコードからカスタム AVD システム イメージをビルドし、デバイス エミュレーションを作成してビルドしたイメージを実行することも可能です。

AVD システム イメージをビルドして実行する手順は次のとおりです。

  1. Android ソースをダウンロードします。

    mkdir aosp-main; cd aosp-main
    repo init -u
    repo sync -j24

他の Android バージョンをビルドする場合は、Android 一般公開リポジトリから、ブランチ名を見つけてください。ブランチ名は、Android コードネーム、タグ、ビルド番号にマッピングされます。

  1. AVD システム イメージをビルドします。Android デバイスのシステム イメージをビルドする場合と同じプロセスです。たとえば、x86 64 ビットの AVD をビルドする場合のプロセスは、以下のとおりです。

    source ./build/envsetup.sh
    lunch sdk_phone_x86_64
    make -j32
  2. Android Emulator で AVD システム イメージを実行します。

    emulator

エミュレータの実行について詳しくは、コマンドライン起動オプションを参照してください。図 2 は、AVD を実行している Android Emulator の例を示したものです。

AVD を実行している Android Emulator

図 2. AVD を実行している Android Emulator

他のユーザーが Android Studio で使用できるように AVD システム イメージを共有する

AVD システム イメージを他のユーザーと共有する手順は、以下のとおりです。他のユーザーは Android Studio で AVD システム イメージを使用して、アプリを開発、テストできます。

  1. 以下のように、sdk パッケージと sdk_repo パッケージを追加で作成します。

    Android 13 以降の場合は、emu_img_zip コマンドを使用します。

    $ make emu_img_zip
    

    これにより sdk-repo-linux-system-images-eng.[username]].zip ファイルが生成されます。

    Android 12 以前の場合は、sdk_repo コマンドを使用します。

    $ make -j32 sdk sdk_repo
    

    make sdk sdk_repo コマンドにより、aosp-main/out/host/linux-x86/sdk/sdk_phone_x86 の下に 2 つのファイルが作成されます。

    • sdk-repo-linux-system-images-eng.[username].zip
    • repo-sys-img.xml
  2. sdk-repo-linux-system-images-eng.[username].zip ファイルを、ユーザーがアクセス可能な場所にホストしたら、その URL を取得して、AVD システム イメージ URL として使用します。

  3. Android 12 以前では、repo-sys-img.xml を適切に編集します。

    • <sdk:url>AVD システム イメージ URL に更新します。
    • その他のファイルの更新については、sdk-sys-img-03.xsd を参照してください。
    • ユーザーがアクセス可能な場所に repo-sys-img.xml をホストしたら、その URL を取得して、カスタム更新サイトの URL として使用します。

カスタム AVD イメージを使用するには、SDK Manager で次の操作を行います。

  1. カスタム更新サイトの URL を、SDK 更新サイトとして追加します。

    これにより、カスタム AVD システム イメージが [システム イメージ] ページに追加されます。

  2. カスタム AVD システム イメージをダウンロードして選択し、AVD を作成します。

マルチディスプレイ サポートを追加する

Android 10 では、マルチディスプレイを強化することで、自動モードやデスクトップ モードなどをはじめとする、より多くのユースケースをサポートします。Android Emulator は、マルチディスプレイ エミュレーションにも対応しています。そのため、実際のハードウェアを設定したりせずに、特定のマルチディスプレイ環境を作成できます。

AVD にマルチディスプレイ サポートを追加するには、次の変更を行うか、こちらの CL を取得します。

  • 以下の行を build/target/product/sdk_phone_x86.mk ファイルに追加して、マルチディスプレイ プロバイダをビルドに追加します。

    PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST := \
        system/lib/libemulator_multidisplay_jni.so \
        system/lib64/libemulator_multidisplay_jni.so \
        system/priv-app/MultiDisplayProvider/MultiDisplayProvider.apk \
    PRODUCT_PACKAGES += MultiDisplayProvider
    
  • 以下の行を device/generic/goldfish/data/etc/advancedFeatures.ini ファイルに追加して、マルチディスプレイ フィーチャー トグルを有効にします。

    MultiDisplay = on
    

エミュレータの最新の機能とリリース情報は、以下のソースから入手できます。