エミュレータのリリースノート

Android Emulator は Android Studio に含まれています。

25.3.0 より前のバージョンのエミュレータは、Android SDK Tools の一部として配布されていました。

ご利用の SDK Tools が最新バージョンかどうかを確認するには、SDK Manager でアップデートをご確認ください。

25.3.0 より前のバージョンの Android Emulator については、Android SDK Tools のリリースノートをご覧ください。

各リリースでのバグの修正について詳しくは、Android Studio リリース アップデート ブログをご覧ください。

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 では、ヘッドレス ビルドに pulseaudiolibX11 のライブラリが含まれなくなりました。エミュレータにパッケージ化されていないシステム依存の共有ライブラリは、削減されて次のリストのようになりました。

  • 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 インストールの問題に対処するために、libfreetypelibsoftoknlibsqlite3libxkbcommon をエミュレータにパッケージ化しました。
  • エミュレータは、信頼性の低い結果を返した 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 で経験するよりも多くのジャンク(ドロップ フレーム)で経験する問題を診断するのにも役立っています。

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 の結果を使用するようになりました。この変更は、リードバックの形式が不適切であるために画像とアセットが表示されない問題の修正に役立ちます。
  • OpenGL ES 拡張 GL_EXT_texture_format_BGRA8888GL_APPLE_texture_format_BGRA8888 のサポートが追加されました(これらの拡張がホストでサポートされている場合)。
  • 診断情報をバグレポート UI に追加しました。また、次のコマンドを使用してコンソールからバグレポートにアクセスできます。
    • telnet localhost 5554
    • avd bugreport
  • Android Q システム イメージで、エミュレータの最小 RAM サイズが 2 GB に増えます。
  • OpenGL やハイパーバイザの初期化に失敗した場合のログと出力をさらに追加しました。
  • エミュレータが AVD の同時 -read-only インスタンスを開始できない場合に、-read-only AVD の再起動を 3 秒間にさらに 3 回試みるようになりました。この変更により、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 を設定しやすくするために、新しい -stdouterr-file <file-name> コマンドライン オプションを使用して stdoutstderr の両方をファイルにリダイレクトできます。
  • 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 が含まれます)を使用することで、Vulkan 1.1 まで、Android Emulator で Vulkan アプリをテストできるようになりました。

Vulkan のサポートを有効にするには、次の機能フラグを ~/.android/advancedFeatures.ini ファイルに追加する必要があります(ファイルが存在しない場合は作成します)。

  • Vulkan = on
  • GLDirectMem = on

ROM デベロッパーに対する最初のサポート

AOSP master ブランチで sdk_phone_x86 または sdk_phone_x86_64userdebugeng バリアント)ターゲットをビルドする ROM デベロッパーは、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 のサポートはまだ実験段階ですが、すでに SwiftshaderMoltenVK、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)

ホスト GUI レンダリングとインタラクティビティを実行コンテキストの広い範囲で可能にすることで、エミュレータを可能な限り汎用性のあるものにするという試みが常に行われています。CI とリモート デスクトップのユーザーには、次のような問題が以前から存在しています。

  • 入力コマンドをプログラムでエミュレータに送信するには、オーバーヘッドが大きくなる可能性のある adb シェルコマンドを実行するか、telnet コンソールを使用します。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 を安全に使用できるようになりました。「不正な」エミュレータの問題が発生している場合は、次のトラブルシューティングの手順を実施します。
    1. すべてのエミュレータを終了します。
    2. ~/.android/adbkey~/.android/adbkey.pub のファイルを両方削除します。
    3. 次のコマンドを実行します: adb kill-server
    4. 次のコマンドを実行します: adb devices
    5. AVD データをワイプします。
    6. エミュレータを再起動します。

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 つのカテゴリに分類されることがわかりました。

アイドル時: Play ストアイメージでのアプリの自動アップデート

ユーザーがログインしていない場合でも、インストールされているすべてのアプリがランダムな間隔でアップデートされることがわかりました。処理中、GMSCore と dex2oat で CPU 使用率がコア数 x 100%(通常は 400% まで)になります。この問題は、Play ストア アプリでアプリの自動アップデートを無効にすることで軽減できます。

アイドル時: 起動ワード検出

ホーム画面でアプリが前面にない状態で、CPU 使用率が非常に高くなることがあります(~25%、急上昇して 50%)。これは、ホストに対し頻繁に ping を送信する起動ワード検出が原因です。CPU コストの主な原因はホストからゲストへの移動にかかる時間であるため、ホストのオーディオ入力を無効にしても、この問題は軽減できません。ただし、Google アプリからマイクの権限を取り消すことで、この問題を軽減できます。

アクティブ時、まれにアイドル時: アニメーション

CPU 使用率が高くなる 3 番目の原因はアニメーションです。グラフィックス ドライバ スタックを最適化することで、エミュレータがアイドル状態でない場合でも CPU 使用率を低減できることがわかりました。Project Marble の一環として、グラフィックス ドライバの最適化を公開する予定です。

28.0.22(2018 年 12 月 21 日)

このアップデートには、次の改善と修正が含まれています。

  • 設定によっては、Quickboot の保存時に Mac エミュレータが再起動する、またはカーネル パニックが発生するという、以前から存在していた問題を修正しました(問題 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 の変更が含まれています。

Android Emulator に影響を与える主な変更点の一部を次に示します。

  • x86: gdbstub が SSE レジスタへのアクセスを提供するようになりました。
  • ディスク イメージ: イメージロックが追加され、デフォルトで有効になっています。オプションが指定されている場合を除き、ホストが OFD または posix ロックをサポートしている限り、複数の QEMU プロセスが同じイメージに書き込むことはできません。
  • qemu-img: qemu-img resize は、イメージの新しい部分の事前割り当てをサポートします。
  • qemuqemu-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 以上のシステム イメージでは、代わりに Swifthader を使用するように自動的に切り替わるようになりました(-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>/*
  • RAM の空き容量が不足してエミュレータを起動できない場合、エラーメッセージが表示されるようになりました。Windows を使用していて、RAM が空いているにもかかわらずエミュレータを起動できない場合は、コミット チャージを超えている可能性があります。この問題のヘルプについては、エミュレータのトラブルシューティング ページをご覧ください。
  • -sysdir コマンドライン オプションが、推定されるシステム イメージ ディレクトリを適切にオーバーライドするようになりました。
  • 仮想モデムがモデル アクティビティ情報 +MAI クエリをサポートするようになりました。
  • メモリリーク、メモリ破損、CPU 使用率に関するさまざまな問題を修正しました。クラッシュ、メモリリーク、その他リソース使用量が多い場合は、Issue Tracker でイシューを作成してください。
  • エミュレータで Bluetooth ヘッドセットを使用するとオーディオが全体的に劣化するという、macOS 10.14 で再発した問題を修正しました。これを防ぐために、エミュレータは macOS で動作しているときに Bluetooth オーディオを使用しないようになりました(問題 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 で解決された問題は次のとおりです。

  • たとえば Ubuntu 18.04 など、最近の Linux カーネル(4.6 以降)を使用するゲスト OS のランダム クラッシュを修正しました(#39#74)。
  • ホスト クラッシュを引き起こす可能性がある x86 命令エミュレータのバグを修正しました(#93)。

32 ビット Windows のサポートの終了

使用率が低く、メンテナンス コストが高いため、Windows で動作する 32 ビット版の Android Emulator はサポートを終了する予定です。32 ビット版の Android Emulator の削除とサポート終了の前に、移行計画を展開します。ただし、この将来の変更に関するフィードバックや懸念を積極的に求めています。

現在 Windows で動作する 32 ビット版の Android Emulator を使用している場合は、Issue Tracker でお知らせください。今後に向けてお客様にどのような協力ができるかについてもお知らせください。

27.3.10(2018 年 8 月)

このアップデートには、次のバグ修正が含まれています。

RAM サイズ構成の修正

一部のユーザーから、エミュレータの動作が遅いとの報告がありました。AVD の config.ini ファイルの AVD RAM サイズが正しく設定されていない原因の 1 つを特定しました。

これを軽減するために、エミュレータは 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] カテゴリを追加しました。この新しいペインには、以前 [Settings] ペインにあったクイックブート スナップショットの保存と読み込みのためのコントロールなど、AVD スナップショットの保存と読み込みのためのコントロールがあります。

保存した各スナップショットの名前と説明を編集できます。

詳細については、スナップショットをご覧ください。

HAXM 7.2.0

HAXM 7.2.0 がすべてのチャンネルで利用可能になりました。

このアップデートには、バグの修正と大容量 RAM のサポートの改善が含まれています。また、この HAXM アップデートとエミュレータ 27.3 以降で、スナップショットは、仮想デバイスの起動時にスナップショット全体を読み込むのではなく、その内容をオンデマンドで RAM に読み込みます。この変更により、スナップショットの読み込みに必要な時間が大幅に短縮されます。

詳細については、VM アクセラレーションの構成をご覧ください。

27.2.9(2018 年 5 月)

このアップデートには、新機能、既存の機能の改善、バグの修正が含まれています。

画面の録画

Android Emulator から動画と音声を記録し、WebM またはアニメーション GIF ファイルに保存できるようになりました。

画面録画コントロールは、[Extended Controls] ウィンドウの [Screen record] タブにあります。

ヒント: 画面録画コントロールは、Control + 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 オーディオ品質が低下した(問題 37095756)。
  • 1 つのエミュレータに送信された場所が、すべてのエミュレータに送信された(問題 73450633)。
  • コンソールを使用して設定された GPS 位置情報が、グラフィック ユーザー インターフェースの [Extended Controls] > [Location] を使用して設定された値によって上書きされた(問題 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 で実行されていたという問題を修正しました。ANGLE または SwiftHader レンダリングを使用するように切り替えられる GPU は、次のように決定されます。
      • 古い 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 との互換性を向上させるために、32 ビット x86 イメージの macOS で 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 をリッスンさせることができます。

    1. 次を実行します。emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1
    2. 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 モードではサポートされていません。

  • 拡張コントロールの [Help] 画面に [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.iniHVF = off という行を追加します。
  • OpenGL ES 3.x は、OpenGL ES 3 をサポートするシステム イメージとホスト GPU で、デフォルトで有効になりました。現在、Android O(API レベル 26)と Windows / Linux ホストのみが OpenGL ES 3 をサポートしています。

    • OpenGL ES 3 で問題が発生した場合は、~/.android/advancedFeatures.iniGLESDynamicVersion = off という行を追加します。
  • エミュレータは、最終的なディスプレイ イメージのポストを除くすべてのレンダリングにオフスクリーン 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 は、サーバー側のフラグをアップデートすることで、ユーザーの構成に依存する修正と機能を公開できるようになります。特定のハードウェアに問題がある場合は、問題を調査できるようにバグを報告してください。
  • 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 マシンでディスプレイを変更するときのスケーリングの問題を修正(問題 268296)。
  • ホスト コンピュータがスリープ状態から再開した後、またはエミュレータが長時間動作しているときに、エミュレータが CPU の 300% を使用して保持する問題を修正。
  • エミュレータがシャットダウンしているときのクラッシュを修正。

HAXM v6.1.1 でのアップデート: 2017 年 3 月

注: HAXM v6.1.1 は、Mac ユーザー向けには 3 月 30 日時点で SDK Manager を通じて提供されており、Windows ユーザー向けにも間もなく提供されます。

Android Emulator のバージョン 26.0.0 は、次のアップデートを含む HAXM v6.1.1 をサポートしています。

  • パフォーマンス モニタリング ユニット(PMU)のエミュレーションの有効化(問題 223377)。
  • Mac 上の VirtualBox や Docker との共存を修正(問題 197915)。
  • インストーラが Windows で Intel VT-x の検出に失敗したときに表示されるインストール エラー メッセージの変更(通常は Hyper-V が有効になっていることが原因です)。
  • 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 リストの 100% を渡すようになりました。これは、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 操作が高速かつスムーズになりました。