Android Emulator は Android Studio に付属しています。
25.3.0 よりも前のバージョンのエミュレータは、Android SDK Tools の一部として配布されていました。
使用しているバージョンが最新かどうかを確認するには、SDK Manager のアップデート情報をご確認ください。
以前のバージョンの Android Emulator をダウンロードするには、エミュレータ ダウンロード アーカイブをご覧ください。
25.3.0 よりも前のバージョンのエミュレータのリリースノートについては、Android SDK Tools リリースノートをご覧ください。
既知の問題とトラブルシューティングについては、エミュレータのトラブルシューティングをご覧ください。
35.2.10(2024 年 10 月 1 日)
- Google Pixel 9、Google Pixel 9 Pro、Google Pixel 9 Pro XL、Google Pixel 9 Pro Fold などの新しい Google Pixel AVD が追加されました
- Vanilla Ice Cream(API 35)用の新しいタブレット システム イメージを追加しました
35.1.20(2024 年 8 月 29 日)
- Google Pixel 8a AVD を追加しました
- 折りたたみ式デバイスのさまざまなバグを修正しました
- Qt の更新と、Qt 関連のクラッシュとハングの修正
- [バグの修正] Vulkan を使用するアプリケーションで Windows でクラッシュとフリーズが発生する問題を修正
34.2.16(2024 年 7 月 9 日)
- [バグの修正] Google Pixel Fold の開閉中に UI がフリーズする
- [バグの修正] Mac M1 で Android バージョンが API 35 ではなく Android Vanilla Ice Cream Preview と誤って表示される。
- [バグの修正] 問題 #296162661: Google Pixel C タブレット エミュレータで HasSystemFeature FEATURE_SENSOR_HINGE_ANGLE が true を返す
34.2.15(2024 年 5 月 31 日)
- swangle モードと広告主のクリーンアップに関連するさまざまなクラッシュを修正
34.2.14(2024 年 5 月 20 日)
Android Studio Jellyfish 安定版パッチ 1 でテスト。
- [バグの修正] 埋め込みエミュレータでスナップショットがハングすることがある
- [バグ修正] スナップショットで [いいえ] ボタンと [キャンセル] ボタンが正常に動作しない
- [バグの修正] 方向パッドボタンが機能しない
- [バグの修正] ANGLE で GPU モードを使用しているときに、一部の条件でエミュレータが起動せず、ログに「GL エミュレーションの初期化に失敗しました」というエラー メッセージが返される問題を Windows で修正しました。
-gpu swangle_indirect
オプションを指定してコマンドラインでエミュレータを起動すると、このバージョンでもこのエラーが生成される場合があります。このバージョンで Windows のコマンドラインを使用してソフトウェア グラフィック レンダリングでエミュレータを起動する場合でも、-gpu swiftshader_indirect
を使用します。 - [バグ修正] キーボード上の位置情報のショートカットで、使用できない地図が読み込まれる
- [バグの修正] 位置情報を設定する際に [ルートを保存] ダイアログが表示されない
34.2.13(2024 年 4 月 30 日)
Android Studio Jellyfish 安定版でテスト。
- Qt 6.5.3 への更新
- 5 月末に実施される、エミュレータの拡張コントロールの位置情報機能で使用される Google Maps API の更新との互換性。
- 影響の大きいクラッシュの修正
- Google Pixel AVD の各種の修正
- ソフトウェア レンダリングに使用するグラフィック ライブラリの更新
- [バグの修正]問題 225541819 x86_64 で Chrome を起動するとエミュレータがクラッシュする
- [バグの修正]問題 314614435
-http-proxy
スイッチが正しく解析されない
34.1.20(2024 年 4 月 1 日)
Android Studio Iguana 安定版でテスト。
- [バグの修正] 問題 #314614435:
-http-proxy
スイッチが正しく解析されない問題を修正
34.1.19(2024 年 3 月 7 日)
Android Studio Iguana 安定版でテスト。
- [バグの修正] 問題 #312677259: ウィンドウのサイズ変更後に埋め込みエミュレータで画面がフリーズする問題を修正しました。
34.1.18(2024 年 2 月 29 日)
Android Studio Iguana 安定版でテスト。
- 以下を含むデバイスがエミュレータに追加されました。
- Google Pixel Fold
- Google Pixel Tablet
- Google Pixel 8
- Google Pixel 8 Pro
- Google Pixel 7a
- gRPC 統合テスト: エミュレータ内で実行されるインストルメンテーション テストで gRPC エンドポイントを使用できるようになりました。これにより、現実的なシナリオのテストが可能になります。この機能により、デベロッパーは Android インストルメンテーション テスト内から Android Emulator でホストされている gRPC エンドポイントを安全に操作できます。
- さまざまなバグを修正しました。
33.1.24(2023 年 12 月 28 日)
Android Studio Hedgehog 安定版と Iguana ベータ版 1 でテスト。
- mp4 形式での画面録画ができないエミュレータ ウェブカメラの問題を修正しました。
- 画面の録画中に Google Pixel Fold AVD を開くとエミュレータがクラッシュする問題を修正しました。
- Google Pixel Fold で、キーボードが取り外された別のスマートフォンのスキンが表示されて使用できない問題を修正(Windows、Mac Intel、Linux で修正)しました。
- スタンドアロン モードの仮想センサーにおける外観の不具合を修正(Windows、Mac Intel、Linux で修正)しました。
- 一部のクラッシュ(特にエミュレータを閉じているときのクラッシュ)の修正を実施しました。
33.1.23(2023 年 11 月 30 日)
Android Studio Giraffe Patch 4 と Hedgehog 安定版でテスト。
- Google Pixel Fold デバイスをより適切にエミュレートするための折りたたみ式デバイスの新しい実装(最新の API 34 での動作)
- グラフィック バックエンドのアップグレード: グラフィック バックエンドに gfxstream プロトコルを実装しました。この機能強化により、システムの全体的なグラフィック パフォーマンスと安定性が向上します。さらに、API 34 のシステム イメージ以降の Vulkan 1.3 サポートを導入しました。
- 機能リクエスト: ピンチ操作によるズーム操作を無効にするか、ホットキーを再割り当てするオプション
- [バグの修正] 問題 #302562962 macOS Sonoma 使用時のエミュレータ ウェブカメラのクラッシュを修正
- [バグの修正] 問題 #293503871 エミュレータを再起動したときに「マイク」の設定が保存されない問題を修正
- [バグの修正] 問題 #270386314 AVD 画面を最小化してもサイドバーが開いたままになるアニメーション エラーを修正
- [バグの修正] 問題 #154896775 バグ送信ツールの修正
32.1.15(2023 年 8 月 29 日)
Android Studio Giraffe Patch 1 と Hedgehog Canary 16 でテスト。
- AAE エミュレータのセンサーに関する GAS HW 要件に準拠
- [バグの修正] 問題 #266201208 API 33 でヘブライ語 SMS が送信されない
- [バグの修正] 問題 #257097404 API 29 と API 30 でホストの復帰後にエミュレータで正しい時間が表示されない
- [バグの修正] 問題 #228201899 Android Emulator Extended Controls 内に Google マップが表示されない
32.1.14(2023 年 6 月 27 日)
Android Studio Hedgehog Canary 8、Giraffe ベータ版 5、Flamingo 安定版でテスト。
- エミュレータのカメラの向きと歪みを修正しました。
- [バグの修正] 問題 #257097404「ホストの復帰後にエミュレータで正しい時間が表示されない」このバグは API 29 と API 30 では引き続き再現されます。
- [バグの修正] 問題 #243456582「Mac M1 マシンのエミュレータで API 30 以降の Android リリースが正しく開始されない」
32.1.13(2023 年 5 月 22 日)
Android Studio Hedgehog Canary 2、Giraffe ベータ版 1、Flamingo 安定版でテスト。
- Google Pixel Fold AVD と Google Pixel Tablet AVD のサポートを追加しました。
- gLinux のクラッシュに関する問題を改善しました。
- [バグの修正] 問題 #215231636「API 30 以降の API を使用するエミュレータで第 12 世代 Intel プロセッサで動作しない」
- [バグの修正] 問題 #275397905「カーソルでエミュレータへのフォーカスインとフォーカス アウトを繰り返すと、Android Emulator M1 でクラッシュが頻繁に発生する」
- AVD 起動の既知の問題(問題 #281725854)。詳細については、エミュレータのトラブルシューティングをご覧ください。
32.1.12(2023 年 3 月 21 日)
Android Studio Giraffe Canary 10、Flamingo RC、Electric Eel Patch 2 でテスト。
- [バグの修正] 問題 #267647323 エミュレータを Android Studio から起動するとネットワークが機能しない
- [バグの修正] 問題 #268498686 エミュレータの画面がちらつく
- [バグの修正] 問題 #270034824 エミュレータのパフォーマンスがバージョン 33.1.1 へのアップデート後に低下した
- [バグの修正] 問題 #225541819 x86_64 で Chrome を起動するとエミュレータがクラッシュする
- [バグの修正] 問題 #257097404 ホストの復帰後にエミュレータで正しい時間が表示されない
- Apple M1 デバイスのクラッシュ レポートを追加
32.1.11(2023 年 2 月 8 日)
Android Studio Giraffe Canary 2、Flamingo ベータ版 1、Electric Eel パッチ 1 でテスト。
- ネットワーク速度の最適化
- 埋め込みエミュレータでのマウスのサポート
- Virtio-snd の改善
- インストール時の Android Emulator の解凍中に、シンボリック リンクの使用が無効になります
- エミュレータ チェックでのクラッシュの修正
31.3.14(2022 年 12 月 13 日)
Android Studio Dolphin、Electric Eel RC1、Flamingo Canary 9 でテスト。
- [バグの修正] Play ストアにログインしたときに AVD がクラッシュする
31.3.13(2022 年 10 月 27 日)
Android Studio Dolphin、Electric Eel ベータ版 2、Flamingo Canary 5 でテスト。
- [バグの修正] 問題 #249948338: タイムゾーン パラメータが機能しない
- [バグの修正] 問題 #249366543: API 31 より後のバージョンでエミュレータの -dns-server オプションが機能しない
31.3.12(2022 年 10 月 10 日)
Android Studio Dolphin と Electric Eel ベータ版 1 でテスト。
このアップデートには、次の改善と修正が含まれています。
- [バグの修正] 問題 #247843000: AVD 相対パスの処理エラー
- API 24 以降でディスクサイズを増強
31.3.11(2022 年 9 月 23 日)
Android Studio Dolphin と Electric Eel Canary 10 でテスト。
このアップデートには、次の改善と修正が含まれています。
- [バグの修正] 埋め込みエミュレータ AVD が拡張コントロール ウィンドウでクラッシュする
- [バグの修正] 問題 #183139207: エミュレータのマイクの起動に関連する音声の問題
- [バグの修正] 問題 #229764024: UI の動作の問題を引き起こす AVD 固定タッチに関するバグ
- [バグの修正] Mac M1 で API 33 AVD を起動すると発生するエラー。
- [バグの修正] 問題 #243053479: エミュレータの更新後、ネットワーク速度が遅くなる
- [バグの修正] 問題 #244617627: Windows と Linux でマップの位置情報を利用できない
- [バグの修正] 問題 #232971796: [Extended Controls] > [Phone] ページで「デバイス呼び出し」ボタンを利用できない
- Android Emulator を minigbm に更新しました
- ビルド スクリプトを Python3 に移行しました
31.3.10(2022 年 8 月 18 日)
Android Studio Dolphin ベータ版 5 と Electric Eel Canary 9 でテスト。
エミュレータを単独でダウンロードできるようになりました。この最新の安定版で問題やクラッシュが発生した場合は、バグを報告し、エミュレータ ダウンロード アーカイブから以前動作していたバージョンをダウンロードすることをおすすめします。
このアップデートには、次の改善と修正が含まれています。
- Windows での Unicode パスサポートの強化
- 同じ AVD の新しいリリースを適用できるようにするためのエミュレータ シャットダウンの処理の改善
- 折りたたみ式 AVD の設計とデフォルト設定の更新
- Wear エミュレータ ボタンの更新
- gRPC 音声ストリーミングの改善
- サイズ変更可能なエミュレータ コンソール コマンドの追加
- API 31 に合わせた Chrome の修正
- [バグの修正] GmsCore v21.42.18 で Google アカウントの認証に失敗する
31.2.10(2022 年 4 月 20 日)
Android Studio Dolphin Canary 8 と Chipmunk RC 1 でテスト。
このアップデートには、次の改善と修正が含まれています。
- フォールバックにより、Vulkan 関数を読み込むユーティリティを追加しました
- [バグの修正] gcc8 ビルドエラーを修正
31.2.9(2022 年 3 月 23 日)
Android Studio Dolphin Canary 7 でテスト。
このアップデートには、次の修正が含まれています。
- [バグの修正] M1 でスナップショットを保存する際にメモリ プレッシャーが無視される
31.2.8(2022 年 2 月 7 日)
Android Studio Bumblebee パッチ 1 と Chipmunk Canary 6 でテスト。
このアップデートには、次の改善と修正が含まれています。
- [バグの修正] アプリにログインできない
- [バグの修正] 問題 #215368358: Intel プラットフォーム上の「adb reboot」が、「vcpu shutdown request」を使用して avd をクラッシュさせる
31.2.7(2022 年 2 月 1 日)
Android Studio Bumblebee パッチ 1 と Chipmunk Canary 6 でテスト。
このアップデートには、次の修正が含まれています。
- [バグの修正] M1 マシンでエミュレータがハングアップするエラー。
31.2.6(2022 年 1 月 20 日)
Android Studio Arctic Fox、Bumblebee ベータ版 4、Chpmunk Canary 6 でテスト。
このアップデートには、次の改善と修正が含まれています。
- Wear OS エミュレータに Wear ボタンを追加しました。
- すべての車両プロパティを VHAL タブで編集できるようにしました。
- [バグの修正] GmsCore v21.42.18 で Google アカウントの認証に失敗する。
- [バグの修正] Netshaper が VirtioWifi で正常に動作しない。
- [バグの修正]: イベント マウス コンソール コマンドが機能しない。
- ローカル AVD 作成のための KVM チェックを追加しました。
31.1.3(2022 年 1 月 18 日)
このアップデートには、次の改善と修正が含まれています。
- Fuchsia に対してコンソール ポートを有効にしました。
- マルチディスプレイ ウィンドウのサイズ変更では、向きは無視されます。
- Wi-Fi: MAT MAC アドレスに基づいてユニキャスト パケットを除外するためのサポートを追加しました。
- Wi-Fi: vmnet 使用時のクラッシュを修正しました。
30.9.5(2021 年 12 月 15 日)
このアップデートには、次の改善と修正が含まれています。
- パソコンまたはタブレット サイズのウィンドウに簡単にサイズ変更する機能が追加されました。
- 互換性のあるホストデバイスからのマルチタッチ入力のサポートが追加されました。
- VirtioWifi: タップ ネットワークのサポートを追加しました。
- Wear システム イメージのロータリー入力を有効にしました。
- gRPC オーディオ構成の問題を修正しました。
- SensorReplay エミュレータの再生が、標準の Android センサーをサポートするように更新されました。
- USB パススルーを備えた USB を使用して、エミュレータを周辺機器やデバイスに接続しました。
30.4.5(2021 年 2 月 23 日)
このアップデートには、次の改善と修正が含まれています。
- macOS: 音声入力のひずみに関する問題を修正しました。
- ユーザー空間での virio-vsock のサポートを追加しました。
- 今後のシステム イメージでは、logcat メッセージとカーネル メッセージに virtio-console を使用します。
- Vulkan レンダリングを高速化します。
- テスト失敗時のスナップショットのデバッグに対するサポートを追加しました。
- virtio-gpu: 最新の blob リソースの列挙型をサポートするように定義を更新しました。
- 「asg」タイプ グラフィック トランスポートのスナップショットのサポートを追加しました。
- macOS: macOS SDK 11.1 以降に対してビルドするためのサポートを追加しました。
- 新しいシステム イメージでは、KVMclock がデフォルトで有効になっています。
- Wear エミュレータに心拍数センサーのサポートを追加しました。
- libportability の Vulkan バックエンドを削除しました。
- モデム シミュレータの多数の機能のサポートを追加しました。
30.0.26(2020 年 8 月 16 日)
このアップデートには、新機能、既存の機能の改善、バグの修正が含まれています。
仮想ヒンジセンサーと 3D ビューによる折りたたみ式デバイスのサポート
折りたたみ式デバイス用のヒンジセンサーのサポートを追加しました。これを機能させるには、今後の Android 11 のシステム イメージと AVD 構成が必要です。折りたたみ式の 3D ビューとヒンジのパラメータを、既存の折りたたみ式のプリセットに統合しました。たとえば、以下のプロパティは 7.3 折りたたみ式 AVD の
config.ini
ファイルで使用できます。hw.sensor.hinge = yes hw.sensor.hinge.count = 1 hw.sensor.hinge.type = 1 hw.sensor.hinge.ranges = 180-360 hw.sensor.hinge.defaults = 180 hw.sensor.hinge.areas = 54.7-0 hw.sensor.posture_list=4, 3 hw.sensor.hinge_angles_posture_definitions=210-360, 180-210 hw.sensor.hinge.fold_to_displayRegion.0.1_at_posture=4
折りたたみ式デバイスはサブタイプのパラメータにも対応するようになりました。
config.ini
のプロパティhw.sensor.hinge.sub_type = hinge/fold
が利用できるようになりました。詳しくは、Android Emulator を使用した Android 11 の開発に関するブログ投稿をご覧ください。ヒンジセンサーがデフォルトで有効になりました。
折りたたみ式デバイスが構成されている場合、エミュレータはヒンジ角度のセンサーの更新と姿勢の変化をゲストに送信するようになりました。既存の折りたたみ式デバイスでは、ツールバーの折りたたみまたは展開のボタンを押したときに、ヒンジセンサーの角度と向きが更新されるようになりました。
ARM64 ホスト用のエミュレータ
Linux エミュレータのソースコードで、x86_64 から arm64 ホストへのクロスコンパイルがサポートされ、KVM 仮想化で arm64 システム イメージを実行できるようになりました。現在サポートされているのは
-gpu swiftshader_indirect
(Swiftshader arm64 ホスト レンダリング)のみですが、互換性のあるホスト GPU の libEGL / libGLESv2 ライブラリのセットを使用することもできます。その場合は、lib64 / gles_swiftshader をこのライブラリのセットに置き換えてから-gpu swiftshader_indirect
で再起動します。スナップショットも機能しない可能性があります(-no-snapshot
をコマンドラインに追加します)。手順を以下に示します。mkdir emu cd emu repo init -u https://android.googlesource.com/platform/manifest -b emu-master-dev --depth=1 repo sync -qcj 12 cd external/qemu pip install absl-py pip install urlfetch sudo apt-get install crossbuild-essential-arm64 python android/build/python/cmake.py --noqtwebengine --noshowprefixforinfo --target linux_aarch64
Apple Silicon のサポートは今後対応予定です。
virtio-gpu のサポート
- 今後の virtio-gpu ホスト コヒーレント blob リソースのホスト側のサポートを追加しました。
- エミュレータ レンダリングの仕組みにより、vcpu スレッドで virtio-gpu virtqueue を処理するようになりました(レンダリングは他のスレッドにオフロードされるため)。今後、システム イメージとエミュレータ バージョンで virtio-gpu レンダリングが有効になります。
- 今後システム イメージでは、エミュレータは virtio-gpu ベースのスタックで、すべてのグラフィックを実行できるようになります。
その他の新機能と機能強化
-qemu -usb -device usb-host,vendorid=<usb-vendor-id>,productid=<usb-product-id>
を使用して Windows で USB パススルーを利用できるようになりました(Linux と macOS ではすでに機能しています)。- WebRTC ライブラリを M83 に更新しました。
- エミュレータが WebRTC を介したコンテナでのオーディオ ストリーミングをサポートするようになりました。
- darwinn pipe endpoint が削除されました。
- CUDA VPx デコードをハードウェアで利用できる場合は、環境変数
ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1
を通じて動画の CUDA VPx デコードを利用できるようになりました。 - macOS では、SSE 4.1 と 4.2 が Android ゲストでも利用できるようになりました。
- macOS では INVTSC がデフォルトで有効になりました。これにより、ゲストからの時間測定値の精度が向上します。
- 指標内でユーザーが選択した拡張コントロール ペインをトラッキングできるようになりました。
- ゲストカーネル バージョンが 5.4 以降(R システム イメージ以降)の場合、Linux エミュレータで KVM の準仮想化クロックが使用されるようになりました。
- エミュレータは、ゲストカーネルを解凍するために LZ4 を使用するようになりました。これにより、最新のカーネル パイプラインとの互換性が実現します。
エミュレータ AVD ディレクトリ、Android Studio に埋め込まれたユースケースのディスカバリ ファイルパス、スナップショットへのパスを取得するためのコンソール コマンドを追加しました。
adb emu avd path # Obtains path to AVD directory adb emu avd discoverypath # Obtains path to discovery file adb emu avd snapshotspath # Obtains path to snapshots folder adb emu avd snapshotpath <snapshotName> # Obtains path to the folder that stores the snapshot for the snapshot with name <snapshotName>
縦の画面スペースの節約に役立つように、[Extended Controls] > [Settings] で現在の AVD のデバイス フレームを非表示にするオプションを追加しました。すべての AVD のデバイス フレームを画面全域で非表示にするために、
NoDeviceFrame
機能フラグを利用できるようにしました。このフラグは-feature NoDevice
フレームを使用してコマンドラインからエミュレータを起動することでアクティブにできます。このフラグをデフォルトでオンにするにはNoDeviceFrame = on
を~/.android/advancedFeatures.ini
(このファイルが存在しない場合は作成します)に追加します。モバイルページにプルダウン項目を追加して、メーターのサポートのオンとオフを切り替えられるようにしました。この機能は、5G メーター切り替えをサポートしていない古いシステム イメージでは動作しません。
- 同じ目的で使用するコンソール コマンド
gsm meter on|off
も追加しました。
- 同じ目的で使用するコンソール コマンド
ツールチェーンとビルドで C++17 をサポートするようにアップグレードしました。
修正: 埋め込みエミュレータ
- クリップボードが機能するようになりました。
- エミュレータで大文字が小文字として送信される問題を修正しました。
- Windows での Unicode パスからのコンソール トークンの読み込みを修正しました。
- Linux の
SO_REUSEPORT
エラー メッセージを修正しました。 - gRPC を通じてスナップショット コマンドを送信するときと、Android Studio の埋め込みエミュレータでスナップショットの保存ボタンを押すときにスナップショットが破損する問題を修正しました。
Android Studio に埋め込まれた Linux エミュレータを使用する場合、この作業を Chrome リモート デスクトップで行うと、
XDG_RUNTIME_DIR
が設定されないというバグが生じ、埋め込まれたエミュレータが表示されなくなる(エミュレータ ディスカバリ ファイルがXDG_RUNTIME_DIR
に配置されていることに起因する)可能性があることがわかりました。Chrome の公開バグトラッカーで該当する問題のステータスを確認できます。回避策として、エミュレータは、ユーザー UID に応じておそらく異なるディレクトリ(
/run/user/<uid>
)にあるディスカバリ ファイルを使用するようフォールバックします。埋め込みエミュレータ: 角の丸みやノッチがあるデバイスでは、角やノッチのスペースを考慮してレイアウトが適切に変更されるようになりました。この機能を実装するには、エミュレータのコールドブートが必要です。
gRPC エンドポイントで、デバイスへの SMS 送信がサポートされるようになりました。
全般的な修正
- Riot Vanguard をアクティブにした状態で Windows エミュレータを実行する場合、互換性の問題が見られます。Windows エミュレータで Vanguard アンチチートが検出されるようになり、検出時には警告メッセージがポップアップ表示されます。
- Windows での
FD_SETSIZE
エラーを修正しました。select()
ではなくWSAEventSelect()
を使用して、ループバック サーバーに非ブロック接続を確立するようにしました。 - Linux エミュレータに F16C CPUID 機能のサポートを追加しました。NDK 変換を通じて一部の ARM64 アプリケーションを実行する問題も修正されています。macOS と Windows でもサポート予定です。
- GPX ルートと KML ルートの再生をタイムスタンプに追従するよう修正しました。
- macOS の起動時にアイコンがバウンドする問題を修正しました。
config.ini
内でhw.audioInput=no
とhw.audioOutput=no
を指定すると、エミュレータ オーディオが適切に無効化されるようになりました。- 拡張コントロール ウィンドウが開いているが、アクティブになっていない状態でエミュレータ ウィンドウが最小化された場合に、エミュレータ ウィンドウのサイズを変更すると拡張コントロール ウィンドウが表示されたままになる問題を修正しました。今後のアップデートでは、(拡張コントロール ウィンドウがアクティブになっているときの)この動作は完全に削除されます。
- エミュレータの起動時に Wi-Fi が接続されないという不安定なバグを修正しました。
- エミュレータがシェルコマンドを発行したときに、長いタイムアウトや永続的なタイムアウトが生じてハングアップ終了する問題を修正しました。
-initrd
に渡される大きな画像のサポートを強化するために pc-bios をアップデートしました(以前の BIOS は非効率的な方法を使用していました)。-wifi-server-port
オプションを使用して終了するときに発生するクラッシュを修正しました。- サポートされていないオプションが
-prop
に渡されると、エミュレータが警告を出力するようになりました(qemu.* prop のみがサポートされています)。 - Windows でエミュレータをビルドするときに、ファイルへの書き込みで問題が発生する可能性が低くなります。詳しくは、Windows のビルド手順をご覧ください。
- 問題の原因となっていた折りたたみ式 AVD のズームボタンを無効にしました。
- エミュレータは、デバイスの再起動からの起動時間を正しく報告するようになりました。
- Linux: KVM 権限が不十分な場合、エミュレータはデバッグ手順をより迅速に出力するようになりました。
- エミュレータがアクセラレーションを設定せずに最近のシステム イメージを起動できない問題を修正しました。
- 起動が完了した検出機能から起動するときに、メモリが破損またはクラッシュする問題を修正しました。
- 長い画面録画セッション中に発生するメモリリークを修正しました。
- エミュレータ アイコンを Android Studio 4.1 のブランディングを反映するよう更新しました。
- Windows でのリモート セッション検知のサポートを強化しました。
修正: グラフィックと動画のデコード
- 最新の Asphalt 9 ゲームのレンダリング時に画面が黒くなる問題を修正しました。
NULL
でマッピングされたバッファのフラッシュに関するスパムを削除しました。- ゲスト Vulkan アプリの終了時に Vulkan の状態を破棄すると発生する競合状態を修正しました。
- Vulkan ASTC / ETC2 エミュレーション シェーダーが libOpenglRender ライブラリに組み込まれました。これにより、ファイルシステムからの読み取りと比べて信頼性が高くなります。
- ホスト上の Vulkan 1.0 インスタンスで実行した場合、
vkGetImageMemoryRequirements2KHR
が返されたVkMemoryRequirements2
構造体のpNext
フィールドを誤って消去してしまう Vulkan の問題を修正しました。 - Vulkan レンダラでのメモリリークを修正しました。
isampler2D
のような変数名を持つ GLSL ES 1.00 シェーダーをコンパイルできなかった最近の回帰を修正しました。- Linux でシェーダーをコンパイルする際の潜在的な不具合に対処するさまざまな修正を加えて ANGLE のシェーダー変換機能を更新しました。
- 基本的なフレームバッファの Blit シェーダーがコンパイルに失敗した場合、エミュレータをクラッシュさせて現象を追跡するようにしました。
- アップストリームの ANGLE に合わせて、ANGLE のシェーダー変換機能を更新しました。これにより、正方形以外の行列を使用する OpenGL ES シェーダーの変換と定数たたみ込みにおいてメモリ破損が発生していた問題を修正しました。シェーダー変換機能は、独立した共有ライブラリ
libshadertranslator.dll
になりました。 - 一部の GPU ドライバでの Vulkan 初期化で、特定の 1.1 デバイス機能が見つからない問題を修正しました。
- Vulkan: システムの Vulkan ローダを優先すると一部のセットアップで問題が発生していたため、構築済みのローダを使用するよう元に戻しました。より優れたソリューションも検討しています。
- Vulkan の外部メモリを使用する際に、ホスト上のメモリタイプ インデックスが一致しない状態でインポートされることがある問題を修正しました。
- 列挙型がホストでサポートされていなかった
GL_ALIASED_POINT_SIZE_RANGE
のエミュレーションでの問題を修正しました。 - 一部のホスト GPU で、
GL_EXT_shader_framebuffer_fetch
に関連するエラーが原因で Skia シェーダーをコンパイルできない問題を修正しました。 - D3D9 ANGLE レンダラのコピーは数バージョン前に削除されたため、そのレンダラを使用していたユーザーは、UI 設定で D3D11 ANGLE を選択した場合に D3D11 ANGLE を使用するように自動的に切り替えられます。
- 不具合を追跡するために、Windows の WGL 初期化にデバッグ情報を追加しました。
hw.gltransport=virtio-gpu-pipe
の場合、ホストからゲストへの転送時にホスト上でのスピンを抑制することでパフォーマンスを向上させました。- OpenGLES エミュレーションの初期化に失敗した場合のデバッグログをさらに追加しました。
- スナップショットの読み込み時に YouTube 動画がちらつく問題や表示されない問題を修正しました。
- libvpx の CUDA ハードウェア デコードで問題が発生していることがわかったため、libvpx のソフトウェア デコードに戻しました。サポートされている CUDA ハードウェア デコードがホスト側で実装されている場合、libvpx のハードウェア デコードを環境変数
ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1
で再度有効にできます。
30.0.10(2020 年 4 月 30 日)
このアップデートには、デフォルトで Android Studio とフリーフォーム ウィンドウ モードがアクティブになっている仮想デバイスでエミュレータを直接実行するためのサポートが含まれています。
Android Studio でのエミュレータの実行
Android Emulator を Android Studio で直接実行できるようになりました。 この機能を使用すると、画面のスペースを節約し、ホットキーを使用してエミュレータとエディタ ウィンドウ間をすばやく移動し、IDE とエミュレータ ワークフローを 1 つのアプリケーション ウィンドウ内で整列できます。
フリーフォーム ウィンドウ モード
Android Studio で仮想デバイスを作成するときに 13.5 インチのフリーフォーム タブレット ハードウェア プロファイルを選択して、フリーフォーム ウィンドウ モードが有効になっている AVD を作成できるようになりました。このハードウェア プロファイルには、Android 11 デベロッパー プレビュー 3 以降のシステム イメージが必要です。
既知の問題
フリーフォーム ウィンドウのサイズ変更は、フォーカスをウィンドウ マネージャーに転送する際の問題が原因で現在のところ機能しません。この不具合には、Android 11 システム イメージの今後のリリースで対処する予定です。
30.0.0(2020 年 2 月 19 日)
このアップデートには Android 11(API レベル 30)のシステム イメージが含まれており、ARM バイナリを実行する際のパフォーマンスが向上しています。
Android 11 システム イメージ
次のいずれかの API レベル 30 システム イメージを選択して、Android 11 を実行する AVD を作成できます。
- x86: x86 と ARMv7 の ABI が含まれています。
- x86_64: x86、x86_64、ARMv7、ARM64 の ABI が含まれています。
Android 9 / Android 11 システム イメージ上の ARM バイナリのサポート
アプリが ARM バイナリに依存しているために、これまで Android Emulator を使用できなかった場合、今後は、Android 9 x86 システム イメージまたは任意の Android 11 システム イメージを使用してアプリを実行できるようになりました。もう専用のシステム イメージをダウンロードして ARM バイナリを実行する必要はありません。対象となる Android 9 / Android 11 システム イメージは ARM をデフォルトでサポートしており、フル ARM エミュレーションの専用システム イメージを使用した場合と比べて、パフォーマンスが大幅に改善されています。
既知の問題
- 一部の ARMv7 バイナリは、Android 11 x86 / x86_64 システム イメージ上で実行することができません。Android 11 をターゲットにする場合は ARM64 向けのビルドにすることをおすすめします。
29.0.11(2019 年 5 月 29 日)
このアップデートには、次の改善と修正が含まれています。
- Windows: エミュレータは、
libgcc
で静的にコンパイルされるのではなく、出荷されるlibgcc
DLL に依存するようになりました。 - Linux: gRPC API に logcat のサポートを追加しました。gRPC の詳細については、gRPC ストリーミング エミュレータ(Linux)をご覧ください。
- エミュレータに、32 ビット x86 ゲスト用のヘッドレス ビルドが含まれるようになりました(
qemu-system-i386
)。この機能により、API レベル 26 以下の x86 32 ビットイメージをヘッドレス ビルドで実行できます。API 27 以降の 32 ビット x86 ゲストの場合、エミュレータは 64 ビットエンジン(qemu-system-x86_64
)を使用します。これらのシステム イメージでは、ユーザー空間は 32 ビットですが、カーネルは 64 ビットであるためです。Android Studio はカーネルを使用してエミュレーション エンジンを選択します。 ANDROID_QT_LIB_PATH
環境変数を使用して、カスタム Qt ライブラリパスを指定できるようになりました。- QEMU1 実行可能ファイル(
emulator[64]-[x86|arm|etc]
)がエミュレータ ディレクトリに配置されている場合、QEMU1 を使用する古いバイナリでエミュレータを実行できるようになりました。 - Windows: エミュレータが「vCPU シャットダウン リクエスト」メッセージで起動に失敗する現象を引き起こす可能性がある問題を修正しました。
- Vulkan のエミュレートされた圧縮テクスチャにおける不要なパイプライン障壁の問題を修正しました。
- チャンクされた転送エンコードが使用されたときに HTTP プロキシ リクエストで発生していたエラーを修正しました。詳細については、commit の詳細をご覧ください。
29.0.9(2019 年 5 月 7 日)
このアップデートには、次の修正が含まれています。
- Windows: 仮想シーンカメラとウェブカメラがエミュレータで動作しない問題を修正しました。
29.0.8(2019 年 5 月 6 日)
このアップデートには、次の改善と修正が含まれています。
- 各ディスプレイを列挙して設定するゲストサービスが存在する場合の、複数の仮想ハードウェア ディスプレイのサポートを追加しました。将来のエミュレータ システム イメージのアップデートには、複数の仮想ハードウェア ディスプレイが含まれる予定です。
- 新しいコマンドライン オプション
-delay-adb
を追加しました。このオプションは、ゲストが(コールドブートで)起動を完了するまで、ADB パケットの処理を抑制します。このオプションは、エミュレータを再起動して DDMS を同時に使用する CI 環境でエミュレータを使用する場合に発生する可能性がある問題の解決に役立ちます。 - スナップショットの読み込みで
glIsRenderbuffer
が誤った値を返す場合に発生していたエラーを修正しました。 - Android ゲストが再起動する際の古い状態に関する問題を修正しました。
- Windows: Windows ユーザー名に ASCII 以外の文字またはスペースが含まれる場合にエミュレータが起動しなかった問題を修正しました。
既知の問題
- Automotive システム イメージでは、現在スナップショットがサポートされていないため、スナップショット UI は無効です。
29.0.6(2019 年 5 月 1 日)
このアップデートには、新機能、既存の機能の改善、バグの修正が含まれています。
QEMU1 と 32 ビット Windows サポートの削除
エミュレータを良い状態に維持するために、QEMU1 と 32 ビット版 Windows のバイナリは出されなくなりました。32 ビット版 Windows を使用している場合、バージョン 29.0.6 にアップグレードできません。
Android Q システム イメージの要件
Android Q システム イメージを使用する AVD を実行する場合、バージョン 29.0.6(このリリース バージョン)以降を使用する必要があります。
Project Marble による機能強化
このアップデートは、2018 年 11 月の Android Developer Summit で発表された Project Marble イニシアチブに関する継続的な取り組みを反映しています。以前のリリースでの Project Marble によるその他の機能強化について詳しくは、Android Emulator: Project Marble による機能強化に関する記事をご覧ください。
このアップデートでは、Project Marble への取り組みの大半は、エミュレータのリソース使用量の削減(エミュレータの CPU 使用率の削減など)に向けられています。 また、さまざまな環境でエミュレータを簡単に操作できるように変更するとともに、品質に関する問題全般に対処しました。
以下のセクションでは、このアップデートに含まれている Project Marble による機能強化について説明します。
ホスト オーディオ動作の改善
バージョン 28.0.3 以降、エミュレータはデフォルトでホストからのオーディオ入力をブロックします。
ホスト オーディオ データを使用する場合は、[Extended Controls] > [Microphone] に移動し、[Virtual microphone uses host audio input] を有効にすることで、このオプションを有効にできます。このオプションは、エミュレータが再起動されるたびに自動的に無効になります。
コマンドラインを使用している場合は、-allow-host-audio
オプションでホスト オーディオを有効にすることもできます。次の ADB コマンドを使用して、ホスト オーディオ データをオンまたはオフにできます。
adb emu avd hostmicon
adb emu avd hostmicoff
ヘッドレス エミュレータ ビルドの改善
バージョン 28.0.25 以降、エミュレータには UI なしで実行できるヘッドレス ビルド オプションが含まれています。ヘッドレス ビルドを使用すると、エミュレータを Docker および継続的インテグレーション(CI)ワークフロー向けに設定する作業が容易になります。
このアップデートでは、最小限の依存関係でエミュレータを実行できるように、さらに改善を加えました。Linux では、ヘッドレス ビルドに pulseaudio
または libX11
ライブラリが含まれなくなりました。エミュレータでパッケージ化されていないシステム依存の共有ライブラリは、次のリストに示すものを除いて削除されました。
Linux-vdso.so.1
Libutil.so.1
Libm.so.6
Libdl.so.2
Librt.so.1
Libpthread.so.0
Libgcc_s.so.1
Libc.so.6
ld-linux-x86-64.so.2
Qt UI ライブラリを 5.12 LTS にアップグレード
このアップデートには、Qt 5.12 LTS リリースからの次の改善が含まれています。
- 特定のシステム イメージの起動時に Qt の
libpng
デコードで発生するクラッシュを回避するために、エミュレータはlibpng
のコピーを使用して PNG イメージをデコードするようになりました。 - 一部の Qt 依存ライブラリの互換性のないバージョンを含む一部の Linux インストールの問題に対処するため、
libfreetype
、libsoftokn
、libsqlite3
、libxkbcommon
をエミュレータでパッケージ化しました。 - エミュレータは、信頼性の低い結果を返した Qt ライブラリを使用する代わりに、プラットフォームのネイティブ ウィンドウ ライブラリを使用してモニターの寸法を取得するようになりました。
コールドブート後の自動 CPU 最適化
CPU 使用率の削減のため、エミュレータは、boot complete
シグナルを受信した後、コールドブートで次の ADB コマンドを実行するようになりました。
adb shell settings put screen_off_timeout 214783647
- このコマンドは、画面オフのタイムアウトを増やして、充電せずに電池モードでエミュレータを使用できるようにします。電池モードでは、バックグラウンドでの CPU 使用率が大幅に削減されます。
- AC 充電モードでは、アプリのアップデートのような GMSCore バックグラウンド処理で、デバイスの CPU コアすべてを(さらにはユーザーのマシンを)警告なしに引き継げます。
adb shell pm revoke com.google.android.googlequicksearchbox android.permission.RECORD_AUDIO
- このコマンドは、Google 検索アプリ用のマイクのアクセス許可を取り消します。これにより、Google 検索アプリがアクティブであるとき、ホーム画面とランチャーでのバックグラウンドの CPU 使用率が大幅に削減されます。
- このコマンドは、ホストでホスト オーディオを無効にするエミュレータのデフォルト動作に加えて実行されます。さらに、これにより、28.0.23 リリースのホットワード検出で説明されている CPU 使用率の軽減が自動的に行われます。
パフォーマンス モニタリングの新しい環境変数
2 つの新しい環境変数を使用して、エミュレータのパフォーマンスとリソース使用率を詳細にモニタリングできるようになりました。
SHOW_PERF_STATS=1
- この環境変数を使用すると、CPU と RAM の両方の使用量をトラッキングできます。RAM 使用量のトラッキングでは、グラフィックス使用量と総常駐メモリが区別されます。
ANDROID_EMU_TRACING=1
- この環境変数を使用すると、入力やグラフィックス操作に時間がかかる(1 ミリ秒を超える)たびに出力できます。
- この環境変数は、Windows ユーザーが macOS または Linux のユーザーが経験するより多くのジャンク(ドロップしたフレーム)を経験する問題を Google が診断するうえでも役立っています。
Project Marble における全般的な改善
このアップデートには、Project Marble イニシアチブの一部である、次の全般的な改善も含まれています。
- 次のコンソール コマンドを使用して、エミュレータ上のすべての vCPU を直ちに一時停止できるようになりました。
adb emu avd pause
adb emu avd resume
- OpenGL 描画のオーバーヘッドを大幅に削減しました。この改善により、エミュレータがアニメーションを再生しているときの CPU 使用率が削減されます。
- メインライン QEMU の e1000 仮想ネットワーク デバイスのサポートを復活させました。このデバイスを使用して、ブリッジ ネットワーク環境でエミュレータをセットアップできます。ブリッジ ネットワーク環境では、エミュレータはホスト ネットワーク上に表示され、ホスト ネットワークはエミュレータ上に表示されます。
- QEMU 2.12 に対応した BIOS バイナリがエミュレータの起動に使用されるようになりました。
- 動画のエンコードとデコード用の
ffmpeg
バージョンを 3.4.5 にアップグレードしました。 select()
に基づくメインループをkqueue
に基づくメインループに置き換えることで、macOS 上の QEMU メインループの I/O のオーバーヘッドを大幅に削減しました。- エミュレータで logcat を実行しているときの不安定な予期しない EOF の問題に対処するために、logcat のバッファサイズを 2 MB に増やしました。
- エミュレータがデフォルトで
LC_ALL=C
環境変数をエクスポートするようになりました。この変更は、さまざまなロケールでのエミュレータの実行に関連するクラッシュと非互換性の問題に対処するためのものです。 - [Extended Controls] > [Settings] > [Advanced] > [Performance Stats] でアクセスできるパフォーマンス統計を使用して、エミュレータの CPU と RAM の使用状況をトラッキングできるようになりました。エミュレータが CPU または RAM を過度に使用していると思われる場合は、これらの統計を使用して問題を速やかに診断してください。
glReadPixels GL_IMPLEMENTATION_COLOR_READ_TYPE
は、エミュレートされた GPU の代わりにホスト GPU の結果を使用するようになりました。この変更は、リードバックの形式が不適切であるために画像とアセットが表示されない問題の解決に役立ちます。- OpenGL ES 拡張機能
GL_EXT_texture_format_BGRA8888
およびGL_APPLE_texture_format_BGRA8888
がホストでサポートされている場合の、これらの拡張機能のサポートを追加しました。 - バグレポート UI に診断情報をさらに追加しました。また、次のコマンドを使用してコンソールからバグレポートにアクセスできるようになりました。
telnet localhost 5554
avd bugreport
- Android Q システム イメージで、エミュレータの最小 RAM サイズを 2 GB に増やしました。
- OpenGL やハイパーバイザの初期化に失敗した場合のログと出力をさらに追加しました。
- エミュレータが AVD の同時
-read-only
インスタンスを起動できない場合、エミュレータは 3 秒で 3 回以上-read-only
AVD の再起動を試みるようになりました。この変更により、AVD の他の書き込み可能インスタンスが古いファイルのクリーンアップを完了していない場合、エミュレータが AVD の同時-read-only
インスタンスを起動できる可能性が高くなります。 - 今後のシステム イメージについて、エミュレータが Hardware Composer 2.0 をサポートするようになりました。 この変更により、ほとんどのアニメーションの実行でドライバのオーバーヘッドが軽減されます。
- エミュレータのビルドが CMake / Ninja に基づくようになりました。
- エミュレータ拡張コントロール UI で、キーボード ショートカット表の区切り線が復活しました。
- ユーザーが CPU と RAM の使用状況に関する統計情報を 10 秒間隔で Google チームに提供することを選択できるようになりました。この統計情報により、ユーザーのさまざまなユースケースにおけるエミュレータのリソース使用率に関するデータが充実し、それがエミュレータの効率と応答性の向上につながります。
Project Marble における全般的な修正
このアップデートには、Project Marble イニシアチブの一部である、次の全般的な修正も含まれています。
- Android Q システム イメージの使用時に Intel GPU を搭載したシステムで発生するフレーム表示の引きつりと不正確さの問題を修正しました。
- Pixel 2 XL スキン(またはノッチのあるスキンや角の丸いスキン)とともに Android Q システム イメージを使用すると黒い画面が表示される問題を修正しました。
-partition-size
コマンドライン オプションでデータ パーティションのサイズが設定されない問題を修正しました。- 状況によっては Linx エミュレータの pulseaudio がスピンして CPU コア全体を占有する問題を修正しました。
- 圧縮テクスチャを処理するときに範囲外のメモリにアクセスする問題を修正しました。
- 特定の gralloc バッファ(RGB 565、RGB10A2、RGB(A)16F 形式)を更新する際に
glTexSubImage2D
のホストで発生していた GL エラーを修正しました。 - スナップショットで通知シェードのジオメトリが不適切なインスタンス除数設定でレンダリングされる Android Q システム イメージの表示の問題を修正しました。
- 起動時に Qt がシグナルを失ったり、不安定で一貫性のない状態になったりすることで発生する、再現が困難な起動時のクラッシュとフリーズの問題を修正しました。
- 多数の同時実行に関する問題を修正しました。ThreadSanitizer(TSAN)で Linux エミュレータをビルドできるようになりました。これにより、再現が困難なバグを簡単に発見できます。
- Linux ユーザー向け: 特定のホストカーネルにおいて、ゲスト Android カーネルが KVM で一般的なハードウェア エラーを出力して終了する問題が見つかりました。デバッグが容易になるように、エミュレータは、この問題が発生すると
abort()
するようになりました(これまでエミュレータはハングアップしていました)。 - Linux ユーザー向け: CI 設定が容易になるように、
stdout
とstderr
の両方をファイルにリダイレクトする新しい-stdouterr-file <file-name>
コマンドライン オプションの使用が可能になりました。 SO_REUSEADDR
が正しく使用されない問題を修正しました。詳細については、commit の詳細をご覧ください。- Windows エミュレータでユーザー名にスペースが含まれていると ADB コマンドなどのサブプロセスが開始できないという、以前から存在していた問題を修正しました。
- HAXM vCPU スレッドで RCU が初期化されない問題を修正しました。この修正により、クラッシュや競合状態に対処できる可能性があります。
- 最新の Android Q システム イメージを使用してスナップ ショット UI からスナップショットの保存や読み込みを行う、特定のパターンで発生していたクラッシュを修正しました。
- スナップショットの保存時に AR マクロが再生されている場合、エミュレータがスナップショットから初期化されたときに、仮想シーンカメラが空白になる問題を修正しました。
- リモート デスクトップを設定している一部のユーザーが Linux でエミュレータを起動したとき、画面が黒くなる問題を修正しました。これを回避するため、現在エミュレータは明示的に
MESA_RGB_VISUAL
を構成します。詳細については、commit の詳細をご覧ください。 - TV AVD で回転ボタンが表示される問題を修正しました。
- エミュレータが常に前面に設定されている場合、エミュレータが回転するたびに拡張コントロール ウィンドウが表示される問題を修正しました。
折りたたみ式デバイスのハードウェア プロファイル
折りたたみ式デバイスのハードウェア プロファイルがエミュレータに含まれるようになりました。これらの新しいハードウェア プロファイルを使用するには、Android Studio 3.5 Canary 10 以降を使用する必要があります。
AVD の作成に使用できる折りたたみ式ハードウェア プロファイルには、次の 2 つがあります。
- 7.3 インチ折りたたみ式: 広げたとき 1536x2152、折りたたんだとき 4.6 インチ 840x1960
- 8 インチ折りたたみ式: 広げたとき 2200x2480、折りたたんだとき 6.6 インチ 1480x2480
これらのハードウェア プロファイルのいずれかを使用してエミュレータを実行する場合、エミュレータ ツールバーの折りたたむアクションと広げるアクション、コンソール コマンド、または次のキーボード ショートカットを使用して、デバイスを折りたたんだり広げたりできます。
- 折りたたむ:
Ctrl + F
(macOS ではCommand + F
) - 広げる:
Ctrl + U
(macOS ではCommand + U
)
AR マクロ
一般的な AR アクションのテストに役立つ AR マクロがエミュレータに含まれるようになりました。 たとえば、マクロを使用して、デバイスのすべてのセンサーをデフォルトの状態にリセットできます。
詳細については、一般的な AR アクションをマクロでテストするをご覧ください。
Vulkan のサポート(Windows、Linux)
Windows ユーザーと Linux ユーザーは、互換性のあるシステム イメージ(Vulkan 1.1 の場合は Android Q ベータ版 3 以上、Vulkan 1.0 の場合は Android Q ベータ版 2)と互換性のあるホスト GPU(2014 年以降のほとんどの Intel、NVIDIA、AMD の GPU が含まれます)を使用している場合、Android Emulator で Vulkan 1.1 までの Vulkan アプリをテストできるようになりました。
Vulkan のサポートを有効にするには、~/.android/advancedFeatures.ini
ファイル(存在しない場合は作成してください)に次の機能フラグを追加する必要があります。
Vulkan = on
GLDirectMem = on
ROM デベロッパーに対する最初のサポート
ROM デベロッパーが sdk_phone_x86
または sdk_phone_x86_64
(userdebug
、eng
バリアント)ターゲットを AOSP の master
ブランチでビルドする場合、Vulkan 対応のエミュレータを実行できるようになりました。
このサポートはまだ実験段階であり、主にシステム イメージ、ドライバ、ゲームエンジンを扱うデベロッパー向けです。まだ多くの拡張機能が不足しています。
ただし、HOST_COHERENT
メモリはサポートされており、Vulkan API チュートリアル サンプルを実行できるはずです。
Linux を使用している場合、これは次のコマンドで試すことができます。
mkdir aosp-master
cd aosp-master
repo init -u https://android.googlesource.com/platform/manifest -b master --depth=1
repo sync -c -j12
. build/envsetup.sh
lunch sdk_phone_x86_64-userdebug
make -j12
emulator -no-snapshot -feature Vulkan,GLDirectMem
Vulkan による Skia レンダリング
Vulkan をサポートする NVIDIA と AMD の GPU は、GL_EXT_memory_objects
拡張機能を介して OpenGL とのゼロコピー相互運用もサポートします。エミュレータはこの機能を利用することにより、Skia Vulkan API で Android UI をレンダリングする完全な方法を提供します。
Vulkan をサポートする NVIDIA か AMD の GPU を使用している場合は、次のコマンドを使用して、互換性のあるシステム イメージ(Android Q ベータ版 3 以降)で Skia レンダリングをテストします。
adb shell
su
setprop debug.hwui.renderer skiavk
stop
start
Vulkan の macOS サポート
macOS のサポートはまだ実験段階ですが、Swiftshader API、MoltenVK API、libportability(gfx-rs)API はすでにエミュレータに含まれています。次の環境変数を設定すると、これらの API を試すことができます。
- Swiftshader:
ANDROID_EMU_VK_ICD=swiftshader
- MoltenVK:
ANDROID_EMU_VK_ICD=moltenvk
- libportability:
ANDROID_EMU_VK_ICD=portability
既知の問題
HAXM は、Vulkan コヒーレント メモリをゲストにマッピングできず、エミュレータをシャットダウンすることがあります。これは今後の HAXM アップデートで対処されます。
gRPC ストリーミング エミュレータ(Linux)
Google では、ホスト GPU のレンダリングとインタラクティビティを広範な実行コンテキストで可能にすることで、エミュレータの汎用性をできる限り高められるよう常に努めています。 CI ユーザーとリモート デスクトップ ユーザーには、次の問題が以前から存在しています。
- 入力コマンドをプログラムでエミュレータに送信するには、adb シェルコマンドを実行するか、telnet コンソールを使用します。adb シェルコマンドはオーバーヘッドが大きくなる可能性があります。telnet コンソールは高速ですが、特定のネットワーク構成では動作しない場合があります。
- CI ユーザーは多くの場合エミュレータをヘッドレスで実行するため、画面の表示や操作が必要な問題に気づきにくくなることがあります。
- GPU レンダリングは多くの場合ホストの非仮想ディスプレイに結び付けられているため、リモート デスクトップ ユーザーは、ホスト GPU レンダリングの使用中はエミュレータを操作できないことがよくあります。
これに対処するため、Linux マシンで実行する場合、エミュレータは gRPC サービスを提供するようになりました。gRPC は、HTTP で動作する RPC の一般的なフレームワークです。
エミュレータの gRPC サービスはデフォルトでは無効になっていますが、次のコマンドライン オプションを使用して有効にできます。ここで、<port>
は、エミュレータが gRPC リクエストを処理するポート(通常は 5556
)です。
-grpc <port>
サービスが開始されると、クライアントから gRPC コマンドを発行できます。現在のコマンドセットでは、入力イベントの送信とスクリーンショットの受信の両方が可能です。コマンドは、次の問題の解決に役立ちます。
- HTTP 経由のオーバーヘッドを低く抑えて、入力コマンドをエミュレータに送信できます。また HTTP では、追加のネットワーク構成でコマンドを送信できます。
- エミュレータをヘッドレスで実行している場合でも、スクリーンショット コマンドを送信して現在の画面をクエリできます。インタラクティビティのために、入力イベントをエミュレータに送り返すこともできます。
- リモート デスクトップ ユーザーは、gRPC を使用してスクリーンショットを取得し、エミュレータを操作するために入力イベントを送信しつつ、GPU アクセラレーテッド レンダリングを使用してメイン ディスプレイでエミュレータをヘッドレスで実行できます。
利用可能なコマンドの完全なリストについては、こちらの protobuf をご覧ください。
gRPC を簡単に始められるように、参照用のサンプル クライアントをいくつか用意しました。
現在、これには次のサンプルが含まれます。
- エミュレータの状態のクエリに使用できる Go ベースのサービス。
- スクリーンショットと入力 RPC でリモートのインタラクティビティを示す React アプリ。このサンプルには、protobuf バージョン 3.7.0 以降が必要です。
- エミュレータの VM 構成をクエリし、一連のコマンドを送信する Python サンプル。
28.0.25(2019 年 3 月 29 日)
このアップデートには、次の改善と修正が含まれています。
ヘッドレス エミュレータ ビルド
Docker や他の継続的インテグレーション(CI)ワークフローでは、(他の問題の中でも)Qt とその共有ライブラリの依存関係をサポートできるというシステムの暗黙的な期待のため、エミュレータの設定が困難でした。
これに対処する最初のステップとして、Qt に依存しない QEMU 実行可能ファイルを使用したエミュレータ ランチャーのバリアントを導入しました。Linux では依然として libX11
へのリンクが存在しますが、これもまもなく削除する予定です。
ヘッドレス エミュレータを使用するには、通常どおりコマンドラインからエミュレータを実行します。ただし、エミュレータ バイナリ呼び出しを emulator-headless
に置き換えてください。詳細については、28.1.8 Canary のリリース アップデート情報をご覧ください。
- Android Q システム イメージを実行しているときに Intel GPU で発生するフレーム表示の引きつりと不正確さを修正しました。
- Pixel 2 XL スキンとともに Android Q システム イメージを使用すると黒い画面が表示される問題を修正しました。
- エミュレータの起動に最新の BIOS バイナリを使用するようになりました。この変更により、Windows でエミュレータを起動したときに発生することがある「vCPU シャットダウン リクエスト」エラーを削減できます。
- 「Android Q システム イメージをスナップショットから再開したときに表示がおかしくなる」問題の修正を移植しました。
- platform-tools 28.0.2 の ADB における互換性のない変更により、ユーザーに「不正」なエミュレータの問題が発生していました。現在は、platform-tools 28.0.2 の ADB をエミュレータで安全に使用できます。「不正な」エミュレータの問題が発生する場合は、次のトラブルシューティング手順を実施してください。
- すべてのエミュレータを終了します。
~/.android/adbkey
ファイルと~/.android/adbkey.pub
ファイルの両方を削除します。adb kill-server
コマンドを実行します。adb devices
コマンドを実行します。- AVD データをワイプします。
- エミュレータを再起動します。
28.0.23(2019 年 1 月 29 日)
このアップデートには、次の改善と修正が含まれています。
ホスト オーディオ入力をデフォルトで無効化
Reddit の最近の投稿で、ゲスト Android OS が常にホストマイクのオーディオを使用しているために「OK Google」が予期せず動作することがある問題が詳しく報告されていました。すぐに改善に向けて取り組み、Android チームと協力して、システム イメージでも起動ワード検出を無効にすることにしました。
これに対処するために、次の変更を加えました。
- 実際のホスト オーディオ データは、デフォルトでスケルチされるようになりました。ゲストがマイクを使用すると、ホストのオーディオの代わりに無音が渡されます。
- ホスト オーディオ データを使用する場合は、[Extended Controls] > [Microphone] に移動し、[Virtual microphone uses host audio input] を有効にすることで、このオプションを有効にできるようになりました。このオプションは、エミュレータが再起動されるたびに自動的に無効になります。
CPU 使用率調査のアップデート
Project Marble の調査において、エミュレータの CPU 使用率が高くなるケースは、一般的に次の 3 つのカテゴリに分類されることがわかりました。
アイドル時: Google Play ストアイメージ内でアプリの自動アップデート
ユーザーがログインしていない場合でも、インストールされているすべてのアプリがランダムな間隔でアップデートされることがわかりました。処理中、GMSCore と dex2oat で CPU 使用率がコア数 x 100%(通常は 400% まで)になります。この問題は、Google Play ストア アプリでアプリの自動アップデートを無効にすることで軽減できます。
アイドル時: 起動ワード検出
ホーム画面でアプリが前面にない状態で、CPU 使用率が非常に高くなることがあります(~25%、急上昇して 50%)。これは、ホストに対し頻繁に ping を送信する起動ワード検出が原因です。CPU コストの主な原因はホストからゲストへの移動にかかる時間であるため、ホストのオーディオ入力を無効にしても、この問題は軽減できません。ただし、Google アプリからマイクの権限を取り消すことで、この問題を軽減できます。
アクティブ時、まれにアイドル時: アニメーション
CPU 使用率が高くなる 3 番目の原因はアニメーションです。グラフィックス ドライバ スタックを最適化することで、エミュレータがアイドル状態でない場合でも CPU 使用率を低減できることがわかりました。Project Marble の一環として、グラフィックス ドライバの最適化を公開する予定です。
28.0.22(2018 年 12 月 21 日)
このアップデートには、次の改善と修正が含まれています。
- 一部の設定で、Quickboot の保存時に Mac エミュレータが再起動する(またはカーネル パニックが発生する)という以前から存在していた問題を修正しました(Issue 120951634)。
- マッピングされたファイルを RAM スナップショットとして使用する場合、エミュレータは終了時にファイル マッピングを明示的にマッピング解除するようになりました。
28.0.20(2018 年 12 月 11 日)
このアップデートには、次の改善と修正が含まれています。
- Intel GPU の特定のモデルでスナップショットの読み込み時にエミュレータがフリーズする Windows の問題を修正しました。
- 標準でない
ANDROID_SDK_HOME
の場所を使用しているときに ADB デバイスの状態がunauthorized
になる問題を修正しました。 - CPU アクセラレーションを無効にしてシステム イメージを起動するとエミュレータがクラッシュする Windows の問題を修正しました。
- エミュレータ表示が粗くなる問題を修正しました。ダウンサンプリングが機能します。
- 新しいユーザー補助セキュリティ設定との相互作用により、仮想シーンカメラのマウスルック コントロールが過敏になる可能性がある macOS 10.14 以降の問題を修正しました。
- エミュレータのクロックが散発的に変化する可能性のあるタイムゾーン計算のエラーを修正しました。
- さまざまな cocos2d エンジンアプリと Unreal エンジンアプリにおけるレンダリング エラーを修正しました。
- エミュレータでの Wi-Fi ピアツーピアのサポートを追加しました。
最新の Pie の Play ストアイメージを使用している場合、2 つのエミュレータが Wi-Fi を介して互いに直接通信できるようになりました。Wi-Fi ピアツーピアを使用するには、2 つの AVD を同じ
-wifi-server-port
引数と-wifi-client-port
引数で起動します。emulator @<server-avd-name> -wifi-server-port 9999
emulator @<client-avd-name>-wifi-client-port 9999
- 互換性のないフレームサイズを取得し、Android ゲストのカメラ設定に合わせて動的にサイズを変更することで、Windows でのより多くのウェブカメラに対するサポートを追加しました。
28.0.16(2018 年 11 月)
このアップデートには、新機能、既存の機能の改善、バグの修正が含まれています。
リソース使用量
エミュレータの全体的な RAM 使用量が少なくなりました(特に API レベル 28 以上のシステム イメージを使用する場合)。これらのシステム イメージには、ゲスト側グラフィックス ドライバのメモリ使用量の改善が含まれています。
また、次の部分でもリソース使用量を改善しました。
- 長時間実行テスト中のエミュレータのメモリ使用量を削減しました。長時間実行テスト中にメモリ使用量の問題が引き続き発生する場合は、Issue Tracker でユースケースを説明するイシューを作成してください。
- アニメーション付きのアプリを実行する際の CPU 使用率を削減しました。
- Windows で QEMU AIO コンテキストがリークする可能性がある問題を修正しました。
単一 AVD の複数インスタンスの同時実行
同じ AVD の複数のインスタンスを起動し、同時に実行できるようになりました。 最初のインスタンスの後で起動するインスタンスは読み取り専用であり、ゲスト仮想ディスクに加えた変更は終了時に破棄されます。
同じ AVD の複数のインスタンスを同時に実行するには、最初のインスタンスの後のすべてのインスタンスを、コマンドラインから -read-only
フラグを指定して起動します。
この機能は、Android イメージの書き込み可能部分に関連付けられた QCOW2 ファイルをコピーすることで利用可能になります。ディスク スペースを管理しやすくするため、qemu-img
コマンドライン ツールもバンドルされています。これにより、複数のインスタンスを起動する前に QCOW2 ファイルを事前に commit できます。
さらに、ファイル バックアップのゲスト RAM スナップショット機能と併用すると、複数の AVD インスタンスが、書き込み時コピーのゲスト RAM の共通ソースとして、プライマリ AVD Quickboot スナップショットを共有します。このプロパティは、インスタンスが RAM の大部分を共有することを意味します。複数のデバイスを並列で実行する必要があるテストには、この機能を使用してください。
通常のインタラクティブ ワークフローまたは CI ワークフローに関係する可能性があるユースケースについて、フィードバックをお寄せください。Issue Tracker でイシューを作成または追加してください。
ファイル バックアップのゲスト RAM スナップショット
ゲスト RAM をファイルとして事前に割り当ててマッピングすることで、エミュレータは、終了時にすべての作業を行うのではなく、実行時に Quickboot スナップショットを保存できるようになりました。現在、エミュレータを閉じるときに保存時間が長くなっている場合は、この機能を有効にして Quickboot のパフォーマンスを改善してください。デフォルトで、Quickboot スナップショットは終了時に保存され、実際のデバイスの停止や復帰などのたびに再度読み込まれます。
Android ゲスト RAM はデフォルトで自動保存されるようになったため、デバイスの状態を定義し、その状態から繰り返し読み込むには、セッションごとに変更を破棄するようにエミュレータに指示する必要があります。その方法は次のとおりです。
- コマンドラインからエミュレータを起動する際に、
-no-snapshot-save
または-read-only
フラグを使用します。 - [Extended Controls] > [Snapshots] > [Settings] に移動し、[Auto-save current state to Quickboot?] を [No] に切り替えます。
- このオプションを選択した後、エミュレータを再起動する必要があります。エミュレータを自動保存に設定している場合は、次のコマンドを実行してチェックポイントを設定できます。
adb emu avd snapshot remap 0
このコマンドを実行すると、エミュレータの Quickboot スナップショットがそのチェックポイントのままになります。同じコマンドを再度実行して、チェックポイントからエミュレータを読み込みます。
スナップショット UI を介して取得され読み込まれたスナップショットは、ファイル マッピングなしで以前と同様に機能します。
これは Quickboot の動作に対する大きな変更であるため、Quickboot のパフォーマンスが改善されるかどうか、また使用時にどのような問題が発生するかについて、フィードバックをお寄せください。問題が発生した場合は、~/.android/advancedFeatures.ini
ファイルに次の行を追加することで、この機能を無効にできます。
QuickbootFileBacked = off
エミュレータをスナップショットから起動(-snapshot
コマンドライン オプションを使用するか、または AVD Manager のスナップショットから起動)すると、Quickboot スナップショットの自動保存と、終了時の Quickboot スナップショットの保存の両方が無効になります。これにより、Quickboot スナップショットが意図に反して上書きされる可能性が減り、ファイル バックアップの Quickboot スナップショットを使用しない遅いフォールバック パスの問題が回避されます。
QEMU 2.12
QEMU のバリアントを QEMU 2.9 から QEMU 2.12 に変更しました。このアップデートには、次の QEMU の変更が含まれています。
- https://wiki.qemu.org/ChangeLog/2.10
- https://wiki.qemu.org/ChangeLog/2.11
- https://wiki.qemu.org/ChangeLog/2.12
Android Emulator に影響する重要な変更の一部を次に示します。
- x86:
gdbstub
が SSE レジスタへのアクセスを提供するようになりました。 - ディスク イメージ: イメージロックが追加され、デフォルトで有効になっています。ホストが OFD ロックまたは posix ロックをサポートしている限り、複数の QEMU プロセスが同じイメージに書き込むことはできません(ただし、これと異なるオプションが指定されている場合は別です)。
qemu-img: qemu-img resize
は、イメージの新しい部分の事前割り当てをサポートします。qemu
とqemu-img
で QCOW2 の圧縮がサポートされます。
ユーザー補助
- スクリーン リーダーの問題を修正し、スクリーン レコードとスナップショット UI でこれらのツールのサポートを強化しました。
- 色覚障害を持ったユーザーがクイックブート通知アイコンにアクセスしやすくなりました。
グラフィック
- OpenGL ES 頂点配列ポインタで発生する可能性があった、範囲外のメモリアクセスの問題を修正しました。
- 古い GPU の中には、OpenGL 2.1 以降(必須)をサポートしていないものや、その他の信頼性の問題があるものがありました。これらの問題により、起動時にエミュレータがクラッシュしたり、フリーズしたり、デフォルトの GPU 設定で使用できなくなったりする可能性がありました。エミュレータは、これらの GPU が使用中であることを検出すると、自動的に Swiftshader レンダラに切り替えるようになりました。
eglSwapBuffers
の時点でFBO != 0
がバインドされていた場合に、エミュレータが正しいフレームバッファをポストしない問題を修正しました。- 仮想 Android ディスプレイが左上隅にしか表示されない問題を修正しました。これは、Qt 環境変数の設定ミスによるものだと考えられます。 現在エミュレータは、Qt スケーリングに関連するすべての環境変数をオーバーライドします。
- GLES1 アプリをスナップショットから読み込むとき、状況によってエミュレータがクラッシュする問題を修正しました。
- OpenGL の同時実行の問題と、二重解放やデータ破損を引き起こす可能性があったレンダー スレッドの起動を修正しました。
- Android Emulator で、API レベル 28 以上を使用するシステム イメージに対する ASTC LDR 圧縮テクスチャのサポート(
GL_KHR_texture_compression_astc_ldr
)を利用できるようになりました。 - ほとんどの最新の GPU で、
GLESDynamicVersion
機能フラグを使用しなくても、デフォルトで OpenGL ES 3.x を有効にしてエミュレータを起動できるようになりました。 -gpu guest
(ゲストのソフトウェア レンダリング)はサポートが終了しました。API レベル 28 以上に対応するシステム イメージは、代わりに Swiftshader を使用して自動的に切り替わります(-gpu swiftshader_indirect
)。- コマンドラインから
-no-window
フラグを指定してエミュレータを起動した場合、デフォルトのレンダラは Swiftshader になります。
位置情報
- エミュレータは、緯度と経度による位置情報とともに方位を更新できるようになりました。磁力計仮想センサーは、GPX ファイルか KML ファイルを再生するときに動きを推測することにより、磁北に合わせて動的に自身を調整します。
- デバイスの速度を [Location] ページで設定できるようになりました。
- GPX ファイルか KML ファイルを再生すると、速度は自動的に設定され、再生が終了するとゼロに設定されます。
- 標高は -1,000~+10,000 メートルに制限されなくなりました。
- [Extended Controls] ウィンドウが少なくとも 1 回開かれない限り仮想 GPS の位置情報が定期的に更新されない問題を修正しました。
カメラ
Windows では、ウェブカメラから配信されるカメラフレームのサイズをエミュレータが動的に変更するため、より多くのウェブカメラがサポートされるようになりました。この機能は、フレーム配信のエラーによってエミュレータがハングアップすることも防ぎます。
Play ストア
Play ストアイメージのディスク スペースが不足する問題に対処するため、新しい Play ストア AVD での実行時に、エミュレータがユーザーデータ パーティションを 6 GB に自動的にサイズ変更するようになりました。
全般的な品質の改善と修正
- 一部のユーザーから、エミュレータの動作が遅いとの報告がありました。エミュレータの一時ディレクトリの内部が古いファイルでいっぱいになる原因の 1 つを特定しました。回避策として、エミュレータは ADB の活性チェック ファイルをそのディレクトリに保存しなくなりました。ただし、そのフォルダの内容を削除する方法も使用できます。フォルダの場所は、使用しているオペレーティング システムに応じて、次のいずれかになります。
- Windows:
C:\Users\<username>\AppData\Local\Temp\AndroidEmulator\*
- macOS または Linux:
/tmp/android-<username>/*
- Windows:
- RAM の空き容量不足が原因でエミュレータを起動できない場合、エラー メッセージが表示されるようになりました。Windows を使用していて、RAM が空いているにもかかわらずエミュレータを起動できない場合は、コミット チャージを超えている可能性があります。この問題のヘルプについては、エミュレータのトラブルシューティング ページをご覧ください。
-sysdir
コマンドライン オプションが、推定されるシステム イメージ ディレクトリを適切にオーバーライドするようになりました。- 仮想モデムがモデル アクティビティ情報の
+MAI
クエリをサポートするようになりました。 - メモリリーク、メモリ破損、CPU 使用率に関するさまざまな問題を修正しました。クラッシュ、メモリリーク、過度のリソース使用などの問題が発生した場合は、Issue Tracker でイシューを作成してください。
- エミュレータで Bluetooth ヘッドセットを使用すると音声が全体的に劣化する現象が macOS 10.14 で再発した問題を修正しました。これを防ぐため、現在エミュレータは macOS で実行されているときは Bluetooth オーディオを使用しません(Issue 37070892)。
- Windows でエミュレータの時計が正しいタイムゾーンに設定されない問題を修正しました。
- ハードディスク ドライブ(HDD)を搭載している Linux システムで発生していた、エミュレータの速度低下とハングアップを修正しました。
- macOS でスタック破損を引き起こす可能性がある一部のコンパイル警告を修正しました。
- 誤解を招くようなハングアップ報告につながる可能性がある問題を修正しました。
- いずれかのスレッドが正常に作成されなかった場合にクラッシュを引き起こす可能性があるスレッドプールの破棄に関する問題を修正しました。
- タイマーが不安定になり、ハングアップなどの不審な動作を引き起こす macOS の問題を修正しました。macOS でエミュレータがハングアップする場合は、Issue Tracker でイシューを作成してください。
- エミュレータを閉じると UI が無効になるが実際はエミュレータが閉じないという問題を修正しました。
/dev/urandom
のインスタンスを過度に多く開いたことによる中断など、散発的なクラッシュに関する問題を修正しました。- ADB が強制終了された場合に、エミュレータが最初の起動後に起動しなくなる問題を修正しました。
- MIPS ビルドは削除されました。依然として MIPS が必要な場合は、Issue Tracker でイシューを作成してください。
- スナップショットの読み込み時に ADB 接続が破損する問題を修正しました。
- デバイスの向きが AVD のデフォルトの向きと異なるスナップショットを再開すると、エミュレータ ウィンドウに残像が表示される、または画面外にテレポートする問題を修正しました。
- スナップショット保存時のクラッシュに関する問題を修正しました。
- Linux では、btrfs ファイルシステムを使用すると、エミュレータが自動的にスナップショットを保存し、仮想ディスク デバイスに書き込み時コピーを使用するため、極めて低速になる可能性があります。
~/.android/avd
ディレクトリの中身を一掃し、空の~/.android/avd
ディレクトリで次のコマンドを実行することをおすすめします。chattr +C
これにより、書き込み時コピーが無効になっているフォルダに新しいスナップショットが作成されます。
HAXM 7.3.2
最近のシステム イメージをエミュレータで正常に動作させるには HAXM 7.3.2 をインストールする必要があるため、HAXM 7.3.2 について再度言及します。HAXM 7.3.2 は、Stable チャンネルですでに利用可能である必要があります。https://github.com/intel/haxm/releases から手動でインストールすることもできます。
このバージョンの HAXM で解決された問題は次のとおりです。
- 最近の Linux カーネル(4.6 以上)を使用するゲスト OS のランダム クラッシュを解決しました。例: Ubuntu 18.04(#39、#74)。
- ホストのクラッシュを引き起こす可能性がある x86 命令エミュレータのバグを修正しました(#93)。
32 ビット Windows のサポートの終了
使用率が低く、メンテナンス コストが高いため、Windows で動作する 32 ビット版の Android Emulator はサポートを終了する予定です。32 ビット版の Android Emulator の削除とサポート終了の前に、移行計画を展開します。ただし、Google では、この将来の変更に関するフィードバックや懸念事項のご指摘を積極的に求めています。
Windows で動作する 32 ビット版 Android Emulator を現在ご使用の場合は、Issue Tracker でお知らせください。また、Google が今後に向けてお客様にどのようにご協力できるかについてもお伝えください。
27.3.10(2018 年 8 月)
このアップデートには、次のバグ修正が含まれています。
RAM サイズ構成の修正
一部のユーザーから、エミュレータの動作が遅いとの報告がありました。考えられる 1 つの原因として、AVD の config.ini
ファイルの AVD RAM サイズが正しく設定されていなかったことを突き止めました。
これに対処するため、エミュレータでは、API レベル 26 以上を使用するイメージの最小 RAM レベルを、Android Studio のデフォルト レベルである 1,536 MB に増やします。AVD の config.ini
ファイルに hw.ramSize
がメガバイト単位でリストされていない場合は、Issue Tracker でイシューを作成してください。config.ini
ファイルは次の場所にあります。
~/.android/avd/<avdname>.avd/config.ini
27.3.9(2018 年 7 月)
このアップデートには、次の改善とバグの修正が含まれています。
Windows Hypervisor Platform のエラー メッセージの改善
ユーザーによっては、WHPX エミュレータをアクティブにしたときに Windows Hypervisor Platform(WHPX)が初期化に失敗した理由を診断するのが困難でした。この問題を診断しやすくするため、より多くの情報を含むエラー メッセージを追加しました。そのようなエラー メッセージを有効にするには、コマンドラインから -verbose
フラグを指定してエミュレータを実行します。
全般的な修正
- カメラアプリでスナップショットを読み込むときに発生する OpenGL エラーを修正しました。
27.3.8(2018 年 7 月)
このアップデートには、新機能、既存の機能の改善、バグの修正が含まれています。
スナップショット
特定のデバイス構成について複数の AVD スナップショットを保存できるようになり、またエミュレータの起動時にどの保存済みスナップショットを読み込むかを選択できるようになりました。
Android Studio 3.2 Canary 13 以降、各デバイス構成には [Virtual Device Configuration] ダイアログの詳細設定にコントロールがあります。これにより、AVD の起動時に読み込む AVD スナップショットを指定できます。
このスナップショット機能の拡張に対応するために、[Extended controls] ダイアログに [Snapshots] カテゴリを追加しました。この新しいペインには、AVD スナップショットの保存および読み込み用のコントロールがあります。これには、以前 [Settings] ペインにあった Quickboot スナップショットの保存および読み込み用のコントロールも含まれます。
保存した各スナップショットの名前と説明を編集できます。
詳細については、スナップショットをご覧ください。
HAXM 7.2.0
HAXM 7.2.0 がすべてのチャンネルで利用可能になりました。
このアップデートには、バグ修正と多くの RAM サポートの改善が含まれています。 また、この HAXM アップデートと Emulator 27.3 以降では、仮想デバイスの起動時にスナップショット全体が読み込まれるのではなく、オンデマンドでスナップショットのコンテンツが RAM に読み込まれます。この変更により、スナップショットの読み込みに必要な時間が大幅に短縮されます。
詳細については、VM アクセラレーションの構成をご覧ください。
27.2.9(2018 年 5 月)
このアップデートには、新機能、既存の機能の改善、バグの修正が含まれています。
画面の録画
Android Emulator から動画と音声を記録し、WebM またはアニメーション GIF ファイルに保存できるようになりました。
画面録画コントロールは、[Extended Controls] ウィンドウの [Screen record] タブにあります。
ヒント: 画面録画コントロールは、Ctrl+Shift+R(Mac では command+shift+R)キーを押しても開けます。
画面の録画を開始するには、[Screen record] タブの [Start recording] ボタンをクリックします。録画を停止するには、[Stop recording] をクリックします。
録画した動画の再生と保存のコントロールは、[Screen record] タブの下部にあります。動画を保存するには、タブの下部にあるメニューから [WebM] または [GIF] を選択し、[Save] をクリックします。
また、コマンドラインで次のコマンドを使用して、エミュレータから画面の録画と保存ができます。
adb emu screenrecord start --time-limit 10 [path to save video]/sample_video.webm
スクリーンショット
次のコマンドのいずれかを使用して、コマンドラインからスクリーンショットを取得できます。
screenrecord screenshot [destination-directory]
adb emu screenrecord screenshot [destination-directory]
スクリーンショットは PNG 形式で保存されます。
仮想シーンカメラと ARCore
ARCore を使用した拡張現実アプリ(AR)の開発とテストは、新しい仮想シーンカメラでさらに簡単になりました。これにより、仮想環境内で AR 体験を試すことができます。
エミュレータで仮想シーンカメラを使用する方法については、Android Emulator で AR アプリを実行するをご覧ください。
Pixel デバイス イメージ上の Google Play ストア
Google Play ストアは、Pixel と Pixel 2 のデバイス イメージに対して有効になりました。これは、Android Studio 3.2 以降の AVD Manager で、[Play Store] 列の Google Play ロゴによって示されています。Google Play ストアが有効になっている AVD では、[Extended controls] ダイアログに [Google Play] タブが表示され、デバイス上で Google Play 開発者サービスをアップデートできる便利なボタンが提供されます。
スナップショット
エミュレータを再起動せずにクイックブート スナップショットを読み込めるようになりました。スナップショットを読み込むには、[Extended Controls] ウィンドウを開いて [Settings] ページに移動し、[Load Now] ボタンをクリックします。
リソースの使用効率を改善し、各オペレーションにかかる時間を最小限に抑えるために、スナップショットの読み込みと保存について多くの改善を行いました。依然として保存時間が異常に長い場合は、CPU、RAM、実行中のウイルス対策 / ファイアウォール / セキュリティ ソフトウェアの設定についての詳細とともに、問題を報告してください。
Skia によるレンダリング
API 27 以降のイメージを使用する場合、エミュレータで Skia を使用して Android UI をレンダリングできます。これにより、よりスムーズかつ効率的にレンダリングできます。
現在のところ、Skia を使用するには、明示的に有効にする必要があります。
Skia レンダリングを有効にするには、adb シェルで次のコマンドを使用します。
su setprop debug.hwui.renderer skiagl stop start
カメラ
Windows では、Android Emulator がウェブカメラのバックエンドとして Media Foundation を使用するようになりました。これにより、ウェブカメラ キャプチャのパフォーマンスとフレームレートが大幅に向上しました(最大 720p 30 FPS)。
Mac では、webcam0 と webcam1 を一緒に使用できるようになりました。
その他
-phone-number-prefix
コマンドライン オプションが -phone-number [number]
に変更され、完全な電話番号を設定できるようになりました。
英数字の SMS アドレスを使用できるようになりました。
修正
- Linux 版の Android Emulator は、最新の Clang C++ ツールチェーンを使用してビルドされるようになりました。この変更により、libGL エラーや libstdc++ エラーが原因でエミュレータが起動しない問題が修正されます。
- クラッシュとハングアップの原因をいくつか修正しました。
- 十分な空きディスク スペースがないために発生するクラッシュとハングアップを回避するために、エミュレータは起動時に十分な空きディスク スペースがあるかチェックするようになりました。2 GB 以上の空きがないと起動しません。
- 一部の Unity ゲームがレンダリングできない問題を修正しました。
- エミュレータがネットワークに接続できなくなる DNS の問題を修正しました。
- [Virtual Device Configuration] ダイアログで AVD に割り当てられた内部ストレージの変更が機能しない問題を修正しました。
- 多くの adb プロセスが作成され、正常にシャットダウンされないという問題を修正しました。
- [Extended controls] ウィンドウが開いていないと回転ボタンや UI の他の部分が応答しなくなる問題を修正しました。
- [Extended controls] ダイアログが少なくとも 1 回開かれない限りホストからのコピーして貼り付けが機能しなくなる問題を修正しました。
- フレームレス エミュレータのサイズ変更の矩形がアップデートされ、エミュレータのビジュアル テーマに合わせて改善されました。
- 機内モードがオンのとき、電話と SMS が適切に無効化されるようになりました。
- スナップショットの読み込み後に SMS とモバイル通信機能が無効になる問題を修正しました。
“Unable to open... \pstore.bin. Permission denied.”
のような誤った警告メッセージは表示されなくなります。- 一部の Mac 画面で AVD の位置を変更できない問題を修正しました。
- Pixel 2 XL スキンとともに AVD を実行しているときに、新しい MacBook Pro コンピュータで画面のちらつきや空白が発生する問題を修正しました。
- フレームレス エミュレータがアクティブなときに、ズームモードに切り替えると画面が空白になる問題を修正しました。
- ズームインするとデバイスのスキンとエミュレータのコンテンツがスクロールして同期しなくなる問題を修正しました。
依然としてハングアップやその他の不安定な状態が続く場合は、問題を報告してください。
27.1.12(2018 年 3 月)
このアップデートには、次の問題に対する修正が含まれています。
- エミュレータの起動後に Bluetooth の音声品質が低下した(Issue 37095756)。
- 1 つのエミュレータに送信した位置情報がすべてのエミュレータに送信された(Issue 73450633)。
- コンソールで設定された GPS 位置情報が、グラフィック ユーザー インターフェースの [Extended Controls] > [Location] で設定された値によってオーバーライドされた(Issue 73471760)。
依然としてハングアップやその他の不安定な状態が続く場合は、問題を報告してください。
今回のアップデート、現在のシステム イメージ、Android Studio のプレビュー版では、Android Emulator を使用して、ARCore でビルドされた拡張現実アプリを実行できます。要件と手順の詳細については、Android Emulator で AR アプリを実行するをご覧ください。
27.1.10(2018 年 2 月)
カメラ キャプチャ解像度
接続されたウェブカメラから 720p フレームをキャプチャできるようになりました。
Android 8.1(API レベル 27)以降のシステム イメージを使用するには、接続されたウェブカメラに 720p フレームをキャプチャする機能が必要です。
修正
- ウェブカメラのキャプチャで、歪んだ画像またはすべて緑色の画像が出力されることがある問題を修正しました。
- 実際にハングアップしていない場合でも「emulator: ERROR: detected a hanging thread 'Qt event loop'. No response for 15000 ms」というメッセージが表示される問題を修正しました。
依然としてハングアップやその他の不安定な状態が続く場合は、問題を報告してください。
27.1.7(2018 年 2 月)
フレームレス エミュレータ ウィンドウ:
デバイス スキンファイルを含むエミュレータの場合に、デフォルトで、周囲のウィンドウ フレームなしで表示されるようになりました。周囲を囲むウィンドウ フレームを表示するには、[Extended Controls] ウィンドウの [Settings] ペインで [Show window frame around device] を有効にします。
AVD スナップショットの作業を効率化するためのクイックブートの改善:
- [Extended Controls] ダイアログ ボックスの [Settings] パネルにある [Save Now] ボタンを使用すると、いつでも AVD スナップショットを保存できます。
- エミュレータは、現在の状態と前回保存したスナップショットとの差分だけを保存することで、多くの場合、スナップショットの保存にかかる時間を短縮します。
詳細については、クイックブートのドキュメントをご覧ください。
QEMU 2.9 を使用するようにエミュレータがアップデートされました。
主な改善点は次のとおりです。
- I/O の最適化と I/O スレッドのきめ細かいロックによるパフォーマンスの向上。
- QEMU 2.8(26.1.4)以降のバグの修正。
- HAXM バックエンドの新規実装。
QEMU 2.9 変更ログで、変更の一覧をご覧ください。
OpenGL ES 3.0 を遵守した Swiftshader の実装:
エミュレータの Swiftshader レンダラが OpenGL ES 3.0 を完全に遵守するようになりました。 Swiftshader レンダラの詳細については、[Extended Controls] の [Settings] > [Advanced] セクションをご覧ください。
修正
- [Enable clipboard sharing] オプションのオンとオフを切り替えないとクリップボードの共有が機能しない問題を修正しました。
- Swiftshader レンダリング バックエンドを低解像度の AVD で使用するときのハングアップを修正しました。
27.0.5(2018 年 1 月)
Windows でのレンダリングの ANGLE がデフォルトで無効になりました。
ANGLE の方が使用している環境に適している場合は、コマンドライン フラグ
-gpu angle_indirect
で再度有効にできます。または、[Extended controls] ウィンドウを開いて [Settings] > [Advanced] に移動し、OpenGL ES レンダラ設定で [ANGLE D3D11] を選択します。Shift + B で大文字の「B」が入力されない問題を修正しました。
27.0.2(2017 年 12 月)
新しいクイックブート機能は、AVD インスタンスのスナップショットに基づいてエミュレータの起動時間を短縮します。
クイックブートは、すべての AVD に対してデフォルトで有効になっています。AVD を初めて起動するときはコールドブートを実施する必要がありますが(デバイスの電源を入れるのと同様)、その後の起動はすべて高速で行われ、システムはエミュレータを閉じたときの状態に復元されます(デバイスのスリープを解除するのと同様)。
エミュレータがスナップショットを保存するタイミングを制御するには、エミュレータの [Extended controls] ウィンドウを開いて [Settings] をクリックします。ここで、[Save quick boot state on exit] に対して、次のいずれかの設定を選択します。
- Yes: エミュレータを閉じるとき、常にクイックブート スナップショットを保存します。 これがデフォルトです。
- No: クイックブート スナップショットを保存しません。常にコールドブートを実施します。
- Ask: エミュレータを閉じるとき、クイックブート スナップショットを保存するかどうかを確認します。
選択した内容は、現在開いている AVD だけに適用されます。
詳細については、クイックブートのドキュメントをご覧ください。
Mac OpenGL ES 3(API レベル 24 以上、Google API、x86 ABI を使用するシステム イメージ用)のサポートを追加しました。
OpenGL ES 2 以降のアプリの安定性を高めるため、使用可能な場合はエミュレータで OpenGL コア プロファイルを使用するようになりました。
Swiftshader / ANGLE を使用したレンダリングの新しいオプション:
-gpu swiftshader_indirect
: クイックブートで機能する、高速で安定した Swiftshader のバリアント。-gpu angle_indirect
(Windows のみ): クイックブートでも機能する、ANGLE D3D の安定したバリアント。
古い
-gpu swiftshader
および-gpu angle
オプションはサポートが終了しました。 [Extended controls] ウィンドウの [Settings] > [Advanced] にある OpenGL ES レンダラ設定の SwiftShader と ANGLE のオプションでは、現在*_indirect
バリアントが使用されています。その他さまざまなバグの修正。
26.1.4(2017 年 8 月)
バグを修正し、GPU 構成を次のように改善したマイナー リリースです。
- ANGLE レンダラでの実行時に起動アニメーションを有効にする
- ANGLE レンダラでの実行時に GLES3 を無効にする
26.1.3(2017 年 8 月)
これは、バグ修正、パフォーマンス改善、小規模な機能変更を含むマイナー リリースです。
- このバージョンでは、最新の Android 8.0 システム イメージの使用が必須になりました。
それらのシステム イメージは、Treble に対応し、個別の
vendor.img
パーティションを備えています。 - 新しい HAXM 6.2.0 が使用可能になりました(SDK Manager をご確認ください)。また、次の更新を行いました。
- メモリ使用量を改善しました。HAXM によって固定されたメモリのピーク ワーキング セットは、AVD の RAM のサイズと同じではなくなりました。代わりに、メモリはオンデマンドでページインされます。これにより、RAM の容量が少ないマシンでエミュレータがより確実に動作するようになります。
- HAXM 6.2.0 を使用するエミュレータは、長い初期化フェーズをスキップして、macOS でより速く起動できるようになりました。
- GPU 構成の改善:
- Swiftshader を使用するホスト側のソフトウェア レンダリングにフォールバックすることで、ゲスト側のソフトウェア レンダリングを実行する際に起動時の画面が黒くなる問題を修正しました。Google API を使用した API レベル 19~25 用システム イメージの最新リビジョンでは、ゲスト側のレンダリングが機能します。
- エミュレータが古い Intel GPU の存在を検出したためにソフトウェア レンダラに切り替えられたが実際には個別の GPU で実行されていた問題を修正しました。どの GPU が ANGLE または SwiftHader によるレンダリングを使用するように切り替えられるかは、次のように決定されます。
- 古い Intel iGPU では、OpenGL ドライバと ANGLE D3D ドライバの両方にドライバの問題があります。Intel HD Graphics 3xxx 以前を使用している場合は、Swiftshader を使用します。
- 一部のユーザーから、「Pixel Launcher が停止したままになる」バグが原因で API レベル 25 のイメージを使用できないとの報告がありました。これは、一部の Intel HD 4xxx モデルにおけるドライバの問題であると考えられます。そのため、自動的に ANGLE を使用するように切り替わります。
- GPU エミュレーションで最良の結果を得るには、個別の NVIDIA GPU か AMD GPU、または新しい Intel GPU(Iris、HD 5xxx、HD 5xx / 6xx)のいずれかを使用することをおすすめします。
- AVD が
hw.gpu.mode=host
で構成され、エミュレータがリモート デスクトップ クライアントで起動された場合にエミュレータの起動が失敗する(OpenGL エミュレーションの初期化が失敗する)問題を修正しました。 - 「OpenGL ES API level (requires restart)」設定を明確化しました。問題が発生した場合、または低い OpenGL ES API レベルでテストする必要がある場合、OpenGL ES 3 から OpenGL ES 2 にダウングレードするオプションを追加しました。
- Mesa レンダラはサポートが終了しました。現在
hw.gpu.mode=mesa
は、ホストで Swiftshader を使用するように自動的に切り替えられます。
- macOS 向けの改善:
- エミュレータは、Hypervisor.Framework または HAXM 6.2.0 のいずれかを介して、macOS 10.13 High Sierra に完全に対応するようになりました。
- パフォーマンスおよび macOS との互換性の向上のため、macOS で 32 ビット x86 イメージに対し Hypervisor.framework がデフォルトで有効になりました。これに関する問題が発生した場合は、バグレポートを提出し、
HVF = off
を~/.android/advancedFeatures.ini
に追加してください(このファイルが存在しない場合は作成します)。 - Hypervisor.framework の使用中にインターネット接続が切断される(またはデバッガの接続が失敗する)問題を修正しました。
- ウェブカメラ キャプチャの互換性とパフォーマンスの向上のため、QTKit ベースのカメラ キャプチャは、AVFoundation ベースのバッファ付きカメラ キャプチャに置き換えられました。
- 一部のシステム イメージで Wi-Fi のサポートを追加しました(現在は API レベル 25 のみ)。
「AndroidWifi」という名前のアクセス ポイントが利用可能で、Android は自動的にこのアクセス ポイントに接続します。コマンドライン パラメータ
-feature -Wifi
を指定してエミュレータを実行すると、Wi-Fi サポートを無効にできます。 - 一部のユーザーから、固定サイズの Play ストアのシステム イメージの保存容量が十分でないとの懸念が寄せられました。そのため、デフォルトのサイズを 800 MB から 2 GB に増やしました。
- 設定ページから直接バグレポート UI ページを開くキーボード ショートカット(Ctrl + Shift + U)を追加しました。
- Intel x86 EPT が搭載されているが UG は搭載されていない古い CPU を使用すると、複数のコアが構成されている場合にエミュレータの起動に失敗する問題を修正しました。
- エミュレータ自体が Xen ハイパーバイザで動作している場合に、HyperV が正しく検出されない問題を修正しました。
- 一部の Linux 構成で起動時にエミュレータがクラッシュする問題を修正しました。
26.1.2(2017 年 7 月)
このリリースには、新機能とパフォーマンスの改善が含まれています。
カスタム HTTP プロキシ設定を定義する機能を拡張コントロールに追加しました([More] をクリックしてから [Settings] と [Proxy] をクリックします)。デフォルトではエミュレータは Android Studio の HTTP プロキシ設定を使用しますが、この画面ではプロキシ設定を手動で定義できます。
ゲストモード GPU に VNC サポートを追加し、リモートでエミュレータの表示と制御ができるようになりました。たとえば、次の手順でエミュレータを起動することにより、VNC がポート 5901 をリッスンするように設定できます。
emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1
を実行します。tightvnc ビューアなどの VNC ビューアを開いて、ポート 5901 に接続します。
Mac 内蔵の画面共有クライアントを使用するには、エミュレータの起動時に VNC パスワードが必要です。パスワードを設定するには、次のコマンドを使用します。
emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1,password -monitor stdio
コンソールに「
change vnc password
」と入力して、パスワードを入力します。
Android O は現在、VNC モードではサポートされていません。
拡張コントロールのヘルプ画面に [File a bug] ボタンを追加しました([More] をクリックして [Help] と [Emulator help] をクリックします)。[File a bug] をクリックすると、バグレポートの詳細(スクリーンショット、AVD 構成情報、バグレポート ログなど)を確認できるダイアログが開きます。これにより、レポートを自分用に保存したり、エミュレータの問題を報告したりできます。
エミュレータと仮想センサーパネルにジャイロスコープ センサーを追加しました。これを機能させるには、ジャイロスコープをサポートするシステム イメージが必要です(現在は API レベル 24 と 25)。
ホスト上の複数の仮想ネットワーク インターフェースがエミュレータで機能しない複数の DNS アドレスを導入する場合に、Windows の Qemu DNS リストにホスト優先 DNS を追加しました。
サーバーフラグを介して、macOS 10.10 以上の 32 ビット x86 イメージ用の実験的な macOS Hypervisor.Framework サポートを追加しました。これにより、起動時間とパフォーマンスが改善されます。
- これに関する問題が発生した場合は、
~/.android/advancedFeatures.ini
にHVF = off
という行を追加してください。
- これに関する問題が発生した場合は、
OpenGL ES 3.x は、OpenGL ES 3 をサポートするシステム イメージとホスト GPU で、デフォルトで有効になりました。現在、OpenGL ES 3 をサポートしているのは、Android O(API レベル 26)と Windows / Linux ホストのみです。
- OpenGL ES 3 に関する問題が発生した場合は、
~/.android/advancedFeatures.ini
にGLESDynamicVersion = off
という行を追加してください。
- OpenGL ES 3 に関する問題が発生した場合は、
エミュレータは、最終的な表示画像のポストを除くすべてのレンダリングにオフスクリーン OpenGL FBO を使用するようになりました。これにより、プラットフォーム間でのカラーの一貫性の問題に対処できます。
エミュレータの動作が突然遅くなる問題に関するデータを収集したところ、この問題は古い Intel OpenGL ドライバと Windows の更新プログラムの間の、なんらかの相互作用に関係している可能性があることが判明しました。そのため、Intel HD 4000、3000、2000(および関連する GPU)を使用している場合、レンダリングがデフォルトで D3D レンダラ(ANGLE)または Swiftshader(ソフトウェア レンダラ)のいずれかに設定されるようになりました。
26.0.0(2017 年 3 月)
このリリースは API レベル 26 に対応しています。また、パフォーマンス改善とバグ修正も多数含まれています。
マイナー リビジョン 26.0.3(2017 年 5 月)
- 問題のあるハードウェア構成に起因する問題に迅速に対処できるように、オンラインで更新可能な機能フラグを追加しました。これにより Google は、サーバー側のフラグを更新することで、ユーザーの構成に依存する修正と機能を公開できるようになります。特定のハードウェアに関する問題を見つけた場合は、Google が問題を調査できるようにバグを報告してください。
- Android Wear の API レベル 25 システム イメージのロータリー入力を新しくサポートしました。Wear デバイスのロータリー入力ダイヤルをエミュレートするには、拡張ウィンドウの [Rotary Input] タブをクリックします。
- [Crash Reporting] ダイアログがサイズ変更可能になり、入力なしで [When to send crash reports] が [Ask] にリセットされなくなりました。
- 32 ビット エミュレータでは、エミュレータが 2 GB の仮想アドレス空間の空き領域を使い果たさないように、最大 AVD RAM サイズを 512 MB 以下にすることが必要になりました。
- エミュレータ イメージに絶対パスのサポートを追加しました。
- Google Play ストアイメージの拡張ウィンドウに、Play 開発者サービスのバージョンを示す新しいタブと、Play 開発者サービスのアップデートを確認できるボタンを追加しました。
- [Emulator Settings] ページに、OpenGL レンダラを選択するプルダウンを追加しました。 Windows マシンで OpenGL ドライバの問題が発生している場合は、ANGLE(D3D11)または ANGLE(D3D9)のオプションを試してください(再起動が必要です)。Windows 以外のマシンで OpenGL ドライバの問題が発生している場合は、Swiftshader ソフトウェア レンダラを使用してみてください(再起動が必要です)。
- エミュレータが
exit
コマンドとminimize
コマンドの両方を受け取ったとき、終了時にまれにクラッシュが発生する問題を修正しました。 - Mac マシンでディスプレイを変更するときのスケーリングの問題を修正しました(Issue 268296)。
- ホストパソコンがスリープ状態から再開した後、またはエミュレータが長時間動作しているときに、エミュレータが CPU の 300% を消費および占有する問題を修正しました。
- エミュレータがシャットダウン中にクラッシュする問題を修正しました。
HAXM v6.1.1 でのアップデート(2017 年 3 月)
注: HAXM v6.1.1 は、3 月 30 日以降、SDK Manager を通じて Mac ユーザーに提供されており、Windows ユーザーにもまもなく提供される予定です。
Android Emulator のバージョン 26.0.0 は、次のアップデートを含む HAXM v6.1.1 をサポートしています。
- パフォーマンス モニタリング ユニット(PMU)のエミュレーションの有効化(Issue 223377)。
- Mac での VirtualBox および Docker との共存の修正(Issue 197915)。
- インストーラが Windows で(通常は Hyper-V が有効になっていることが原因で)Intel VT-x の検出に失敗したときに表示されるインストール エラー メッセージの変更。
- Hyper-V ベースの Windows VM で Android Emulator を高速化するためのサポートの追加。このアップデートにより、ホスト Hyper-V インスタンス(Windows VM / ゲストを管理するインスタンス)は、ネストされた仮想化を有効にした最新バージョンの Hyper-V を使用することが必要になります。ゲスト Hyper-V インスタンス(Windows VM)では、Hyper-V を無効にする必要があります。
依存関係
- Android SDK Platform-Tools リビジョン 25.0.4 以降。
- Android SDK Tools バージョン 26.0.0 以降。
新機能とバグの修正
- API レベル 26 に対応。
- GLES 2.0 に完全に対応しました。現在は、適合するデスクトップ OpenGL ドライバを備えたホスト GPU がある場合、エミュレータは Android CTS dEQP-GLES2 の完全な
mustpass
リストを渡します。これは、API レベル 24 の x86 イメージ(リビジョン 11 以上)でリリース済みであり、まもなくすべてのシステム イメージに組み込まれる予定です。 - 動画再生のパフォーマンスを改善しました。エミュレータは、すべての動画カラーバッファをホスト / ゲスト共有メモリに格納し、YUV から RGB への必須の最終変換を GPU で実施します。現在、ほとんどのシステムで 1080p30 を利用できます。これは、API レベル 24 の x86 イメージ(リビジョン 11 以上)でリリース済みであり、まもなくすべてのシステム イメージに組み込まれる予定です。
- エミュレータは、終了時に
adb devices
リストから自分自身を正常に登録解除し、Linux マシン上の開いている TCP ポートを閉じるようになりました。 - adb 接続の信頼性が向上しました。実行中のエミュレータの検出が速くなり、「オフライン」や「不正な」状態にはなりません。
25.3.0(2017 年 3 月)
このリリースの時点で、Android Emulator は SDK ツールとは別にリリースされます。このリリースには、さまざまなパフォーマンス向上、新機能、バグの修正が含まれています。
マイナー リビジョン 25.3.1(2017 年 3 月)
- デフォルトで GLAsyncSwap を無効にすることで、一部の GPU 構成で発生するクラッシュを修正しました。
この機能は、ゲームと動画のフレーム タイミングとフレームレート(フレーム/秒)を改善するために 25.3.0 で追加されましたが、一部の不明なマシン構成ではエミュレータの障害を引き起こします。この機能を手動で有効にするには、
android_sdk/emulator/lib/advancedFeatures.ini
ファイルを開いてGLAsyncSwap = on
を設定します。
依存関係
- Android SDK Platform-Tools リビジョン 24 以降。
- Android SDK Tools リビジョン 25.3.0。
新機能とバグの修正
- エミュレーション エンジンを QEMU 2.7 にアップデートし、最新のバグ修正、パフォーマンスの改善、新機能を追加しました。
- IPv6 を新規にサポートしました。
- エミュレータは、SwiftShader をホスト上の純粋なソフトウェア レンダラとして使用するようになりました。
- Android Pipe のパフォーマンス改善: エミュレータと Android OS の間の主要な通信チャンネルである Android Pipe が大幅に高速化され、レイテンシが短くなり、マルチスレッド パフォーマンスが改善されました。これにより、エミュレータのパフォーマンスが次のように向上します。
- ADB の push / pull 速度の向上。
- 3D アクセラレーション サポートの向上。
- エミュレータの全体的な応答性の向上。
- グラフィックス パフォーマンスの向上。
- エミュレータがゲストのリクエストに応じて GPU 側のバッファ(glBindBuffers / glBufferData)を使用するようになったため、一部のアプリで CPU オーバーヘッドが減少しました。
- オーディオ サポートの向上。
- ディスク I/O の高速化: エミュレータが個別のスレッドを使用してディスク I/O をディスパッチするようになったため、レイテンシが短くなり、スループットが向上しました(シーケンシャル I/O の速度は最大 1.5 倍、ランダム アクセス I/O の速度は最大 5 倍)。これにより、ディスクへのフラッシュの回数も減り、物理デバイスの負荷が大幅に軽減されます。
- エミュレータが Windows マシンでのディスク起動にスパース ファイルを使用するようになり、初回起動と「ワイプデータ」起動の両方が高速化しました。AVD を作成またはリセットするとき、エミュレータは 2 GB 以上ではなく 100~200 MB のデータをディスクに書き込むようになりました。
- さまざまな GUI の機能強化:
- エミュレータは、バグが修正されパフォーマンスが向上した Qt 5.7.0 を使用するようになりました。
- UI 初期化で、すべてのエミュレータ実行可能ファイルが Qt プラグインとして読み込まれなくなりました。このため、特に HDD で処理時間が大幅に短縮されます。
- UI 操作(回転、ウィンドウのサイズ変更、拡張コントロール ウィンドウを読み込む操作 / 閉じる操作など)が高速かつスムーズになりました。