Android Emulator は、開発者のコンピュータ上でAndroidデバイスの完全な仮想コピーを実行するAndroid Studioのコンポーネントです。エミュレータはQEMUを使用してARM命令をホストのx86_64アーキテクチャに変換します。Googleドキュメントでは、AVD仮想デバイスとハードウェアアクセラレーションのセットアップの完全なサイクルについて説明しています。
要点
Android Emulator は、QEMU (Quick EMUlator) 上で動作し、Androidハードウェアプラットフォームをエミュレートする仮想Androidデバイスです。iOS Simulatorとは異なり、Android EmulatorはARM命令を完全に変換するため、モバイルアーキテクチャ用にコンパイルされたコードをx86_64ホストで実行できます。
Googleは2007年に最初のAndroid SDKとともにAndroid Emulatorをリリースしました。それ以来、エミュレータは低速なARMのみのソリューションから、GPUサポート、ハードウェアアクセラレーション、センサーエミュレーションを備えた高性能システムへと進化しました。Google(Android Developer Blog、2025)によると、HAxMを搭載した最新のエミュレータは初世代よりも4〜5倍高速に動作します。
エミュレータはAndroidデバイスのすべてのコンポーネント(CPU、GPU、RAM、ストレージ、タッチスクリーン、加速度計、ジャイロスコープ、GPS、カメラ、バッテリー、NFC、Bluetooth、Wi-Fi)をサポートしています。開発者はExtended Controlsを通じて、着信、SMS、さまざまなネットワーク信号レベル、地理位置情報をシミュレートできます。
Android Emulator はSDK Managerからダウンロードしたシステムイメージ(System Images)を使用します。各システムイメージには、選択したAPIレベルとターゲットプロセッサアーキテクチャに対応するAndroidファームウェアの完全なコピーが含まれています。x86_64(HAxM推奨)、ARM64(ARM互換性テスト用)、Google APIs(Google Play Servicesプリインストール)など、異なるアーキテクチャのイメージが利用可能です。Wear OS、Android TV、Automotive用の個別イメージもあります。
// コードでのエミュレータタイプの確認
val isEmulator = Build.FINGERPRINT
.contains("generic") ||
Build.PRODUCT.contains("sdk")
if (isEmulator) {
Timber.d("アプリはエミュレータで実行されています")
}AVD (Android Virtual Device) はエミュレータ用の仮想デバイス設定です。Android StudioのAVD Managerでは、モデル、画面サイズ、ピクセル密度、RAM容量、ストレージ容量、Androidバージョンなど、あらゆる特性の組み合わせでデバイスを作成できます。
| AVDパラメータ | 開発時の推奨 | テスト時の推奨 |
|---|---|---|
| アーキテクチャ | x86_64(HAxM対応) | ARM64(純粋エミュレーション) |
| RAM | 2048〜4096 MB | 1536〜2048 MB |
| 内部ストレージ | 8〜16 GB | 4〜8 GB |
| APIレベル | 最新安定版 | 最小サポート版 |
| Google Play Services | 有効 | 必要に応じて |
AVDの作成はAndroid StudioのDevice Managerから行います。ハードウェアプロファイル(Pixel、Nexus、Galaxyなど)、システムイメージを選択し、パラメータを設定します。作成後、デバイスはRun Configurationsリストに表示され、アプリをすぐに実行できます。
エミュレータは Quick Boot をサポートしています。AVDの状態をスナップショットとして保存し、次回起動時に復元します。起動時間が30〜60秒から2〜5秒に短縮されます。クリーンな状態にリセットするには、AVD ManagerでCold Boot Nowを使用してください。
ARMトランスレーション はAndroid Emulatorの主要技術で、ARM命令をリアルタイムでx86_64に変換します。トランスレーションがない場合、エミュレータはx86_64イメージのみ実行でき、テスト機能が制限されます。GoogleはARM→x86変換にlibhoudini、HAXMアクセラレーションにIntelライブラリを使用しています。
# WindowsでのHAxMステータスの確認
sc query "IntelHaxm"
# SDK Manager経由でHAxMをインストール
sdkmanager "extras;intel;Hardware_Accelerated_Execution_Manager"
# ハードウェアアクセラレーションでエミュレータを起動
emulator -avd Pixel_9_API_35 -accel on -gpu autoIntel HAxM (Hardware Accelerated Execution Manager) はIntel VT-xプロセッサ用の仮想化ドライバで、エミュレータを3〜5倍高速化します。AMDプロセッサ搭載のWindowsでは、Windows Hyper-V Platform と WHPX を使用してください。ハードウェアアクセラレーションがないと、エミュレータは低速で動作し、アニメーション遅延が最大1〜2秒発生します。
Apple Silicon(Mシリーズ)搭載のmacOSでは、ハードウェアアクセラレーションはHypervisor.frameworkを通じてネイティブに動作します。Google(Android Emulator Release Notes 2025)によると、M2 Maxのエミュレータは基本操作で実機の95%のパフォーマンスを達成しています。
エミュレータと実機の選択は開発段階によって異なります。エミュレータでの開発とデバッグは便利です。高速起動、即時デプロイ、Extended Controlsによるセンサーシミュレーションが可能です。実機では、最終的なパフォーマンス、バッテリー、ハードウェアのテストを行います。
| シナリオ | エミュレータ | 実機 |
|---|---|---|
| UI開発 | ○(高速) | ×(デプロイが遅い) |
| パフォーマンステスト | ×(指標が過大) | ○(実測値) |
| センサーエミュレーション(GPS、NFC) | ○(Extended Controls) | 制限あり |
| 消費電力 | 非対応 | ○(Battery Historian) |
| ネットワークテスト(2G/3G/4G/5G) | ○(速度シミュレーション) | ○(SIMカード使用) |
| CI/CD自動化 | ○(物理デバイス不要) | 困難(デバイスファーム) |
ハードウェアアクセラレーションを使用したエミュレータの パフォーマンス は、多くの場合、実際の低価格デバイスよりも優れています。そのため、最終テストは目標のパフォーマンスレベルの実機で実行してください。
Kotlin で実行環境を検出すると、不適切なコードを無効にしたり、デバッグ情報を追加したりするのに便利です。Androidはこの目的のために Build.FINGERPRINT、Build.PRODUCT、Build.HARDWARE を提供しています。
object EmulatorDetector {
val isEmulator: Boolean
get() = Build.FINGERPRINT.startsWith("generic")
|| Build.FINGERPRINT.contains("emulator")
|| Build.HARDWARE == "ranchu"
|| Build.HARDWARE == "goldfish"
fun logEnvironment() {
if (isEmulator) {
Log.d("EmulatorDetector", "環境: エミュレータ")
}
}
}エミュレータ検出器の使用はデバッグ時に役立ちます。エミュレータ上で詳細なログを有効にしたり、アニメーションを無効にしたり、実際のAPI呼び出しをモックに置き換えたりできます。アプリのビジネスロジックに必要な場合を除き、プロダクションビルドでの確認は避けてください。
Android Emulator はCIサーバーでの自動テストに使用されます。テストを実行するには、AVDを作成し、エミュレータを起動し、システムが完全にロードされるのを待つ必要があります。Gradle Managed Devicesはこのプロセスを簡素化し、AVD設定をbuild.gradle.ktsに記述します。
// build.gradle.kts — Gradle Managed Devices
android {
testOptions {
managedDevices {
devices {
register<ManagedVirtualDevice>("pixel9Api35") {
device = "Pixel 9"
apiLevel = 35
systemImageSource = "google"
}
}
}
}
}エミュレータを 手動で 起動するには、コマンドラインを使用します: emulator -avd Pixel_9_API_35 -no-window -no-audio -gpu swiftshader_indirect。-no-windowフラグはサーバー環境用にGUIを無効にし、-gpu swiftshader_indirectはホストGPUなしでソフトウェアレンダリングを提供します。
Android EmulatorのExtended Controlsは、ネットワーク状態(レイテンシ、帯域幅、ネットワークタイプ(GPRS、EDGE、3G、4G、5G))のシミュレーションための強力なツールを提供します。これにより、通信環境の悪いエリアに物理的に移動することなく、低速接続時のアプリの動作をテストできます。
センサーシミュレーションには、仮想3Dデバイスモデルによる加速度計、ジャイロスコープ、磁力計が含まれます。GPSには、ルートを含むGPXファイルをロードでき、エミュレータは座標に沿った移動をシミュレートします。これはナビゲーションアプリのテストに不可欠です。カメラはホストのWebカメラまたは画像の読み込みを通じてエミュレートされます。
Android Emulatorの マルチディスプレイ は、タブレットや折りたたみデバイス向けの複数画面をサポートしています。Extended Controlsでは、エミュレータを再起動することなく、画面の向き、サイズ、ピクセル密度(DPI)を変更できます。折りたたみデバイスのテストには、折りたたみ状態と展開状態を切り替えるFoldableモードが利用可能です。
エミュレータはスマートフォンだけでなく、Wear OS と Android TV もサポートしています。Wear OSでは、円形および長方形のAVD設定、ベゼル回転シミュレーション、スワイプジェスチャー、および電話エミュレータとの連携テストが利用できます。Android TVではD-padナビゲーションを使用したインターフェースが使用されます。両方のプラットフォームがハードウェアアクセラレーションとGoogle Play Servicesを使用したテストをサポートしており、スマートウォッチやテレビアプリの開発サイクルにとって重要です。
よくある質問
Android EmulatorはQEMUによる 完全なARMエミュレーション で命令変換を行いますが、iOS Simulatorはホストアーキテクチャ向けにコードをコンパイルします。Android EmulatorはGPU、カメラ、センサー、Bluetooth、NFCをサポートしていますが、iOS Simulatorはこれらの機能のほとんどをサポートしていません。
Kotlinでは、Build.FINGERPRINT に「generic」または「emulator」が含まれているか、Build.HARDWAREに「ranchu」または「goldfish」が含まれているかを確認します。追加のマーカーとしてBuild.PRODUCTを使用します。エミュレータの場合、「sdk_google」または「google_sdk」が含まれます。
AMDプロセッサの場合は Intel HAxM(Intel VT-x)またはWindows Hyper-V Platform(WHPX)を有効にします。ハードウェアアクセラレーション対応のx86_64システムイメージを使用します。AVD Managerでエミュレータに少なくとも4 GBのRAMを割り当てます。スナップショット読み込みのためにQuick Bootを有効にします。
はい、Android Emulator はAndroid 10(API 29)以降でNFCエミュレーションをサポートしています。Extended Controls → Phone → NFCからNDEFメッセージを送信できます。タグの読み取り/書き込み、ピアツーピア、HCEモードに対応しています。完全なテストには、NFCチップを搭載した実機を使用してください。
日常的な開発には Google APIs対応x86_64 を選択してください。最大のパフォーマンスと完全なサービスセットを提供します。互換性テストにはARM64イメージを使用します。CIにはGoogle Play Servicesなしのイメージを使用します。サイズが小さく、起動が高速です。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。