Android Emulator を使用して Android デバイスのエミュレーションを作成し、独自のカスタム Android システム イメージを実行できます。また、Android Emulator のエミュレーションにはマルチディスプレイのサポートを追加できます。
Android Emulator のアーキテクチャ
Android Emulator は、Android Virtual Device(AVD)と呼ばれる仮想マシンで、Android オペレーティング システムを実行します。各 AVD には完全な Android ソフトウェア スタックが含まれているため、物理デバイス上にあるかのようにシステムが動作します。図 1 は、Android Emulator のアーキテクチャの概念図です。エミュレータについて詳しくは、Android Emulator 上でアプリを実行するを参照してください。
図 1. Android Emulator のアーキテクチャ
AVD イメージをビルドする
各 AVD には、AVD で動作する Android システム イメージが含まれています。AVD Manager には、複数のシステム イメージが含まれています。ソースコードからカスタム AVD システム イメージをビルドし、デバイス エミュレーションを作成してビルドしたイメージを実行することも可能です。
AVD システム イメージをビルドして実行する手順は次のとおりです。
Android ソースをダウンロードします。
mkdir aosp-main; cd aosp-main
repo init -u
repo sync -j24
他の Android バージョンをビルドする場合は、Android 一般公開リポジトリから、ブランチ名を見つけてください。ブランチ名は、Android コードネーム、タグ、ビルド番号にマッピングされます。
AVD システム イメージをビルドします。Android デバイスのシステム イメージをビルドする場合と同じプロセスです。たとえば、x86 64 ビットの AVD をビルドする場合のプロセスは、以下のとおりです。
source ./build/envsetup.sh
lunch sdk_phone_x86_64
make -j32
Android Emulator で AVD システム イメージを実行します。
emulator
エミュレータの実行について詳しくは、コマンドライン起動オプションを参照してください。図 2 は、AVD を実行している Android Emulator の例を示したものです。
図 2. AVD を実行している Android Emulator
他のユーザーが Android Studio で使用できるように AVD システム イメージを共有する
AVD システム イメージを他のユーザーと共有する手順は、以下のとおりです。他のユーザーは Android Studio で AVD システム イメージを使用して、アプリを開発、テストできます。
以下のように、
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
sdk-repo-linux-system-images-eng.[username].zip
ファイルを、ユーザーがアクセス可能な場所にホストしたら、その URL を取得して、AVD システム イメージ URL として使用します。Android 12 以前では、
repo-sys-img.xml
を適切に編集します。<sdk:url>
を AVD システム イメージ URL に更新します。- その他のファイルの更新については、sdk-sys-img-03.xsd を参照してください。
- ユーザーがアクセス可能な場所に
repo-sys-img.xml
をホストしたら、その URL を取得して、カスタム更新サイトの URL として使用します。
カスタム AVD イメージを使用するには、SDK Manager で次の操作を行います。
カスタム更新サイトの URL を、SDK 更新サイトとして追加します。
これにより、カスタム AVD システム イメージが [システム イメージ] ページに追加されます。
カスタム 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
エミュレータの最新の機能とリリース情報は、以下のソースから入手できます。