fkm blog

software開発に関することを書いていきます

Google I/O 2019: Best Practices in Using the Android Emulator

youtu.be

Androidエミュレーターに関するセッション

今年は折りたたみ機能が追加された。

エミュレーターの開発に関し、大事にしていること。 - 早いこと - 忠実であること(fidelity) - 多様であること(versatility)

今のエミュレーターはPCが早いと、実機より早い。動画では2015年のPCとPixel 2との比較が紹介されてた。

通常、エミュレーターはホストとゲストでCPUのアーキテクチャが違うので、翻訳が必要。最近のAndroidエミュレーターx86版で動作しているので、ほぼ翻訳なしにホストで実行できる。これらのテクノロジーはハイパーバイザー(hypervisor)と呼ばれ、WindowsだとHAXMかWindows Hypervisor Platform、MacだとMacOS Hypervisor FrameworkとKVM

ハードウェアGPUはデフォルトに。なのでVulkanやOpenGL ES 3.1をエミュレーターでサポート。

次はADBの話。実機に繋いでファイルを送信した場合、USBケーブルあたりでの制約を受けるが、エミュレーターだと仮想TCPで繋がるので早い。

AR Macro

ARCoreを使ったアプリをエミュレーターデバッグできる。またマクロ機能が追加された。

バッテリーモードがデフォルトに

今まで、エミュレーターは常に充電中モードだった。そのため、Playストアアプリがアップデートの有無にかかわらず更新を探しに行ってた。それだとホストのCPUとか食っちゃうので、バッテリー使用中のモードをデフォルトにした。もちろん設定を変更して充電中モードに戻すことも可能。

より実機に近づける

エミュレーターに対しては90万以上のコンパチビリティテストが実施されている。これらのテストは実際に実機に対しても行われているもの。

Playストア入り版の場合、アプリ内課金やSNSへのログインとかもちゃんとできる。さらにアプリのシェア機能もエミュレーターで行うことができる。

スナップショット

例えばアプリのテストを再度実施したい場合、今までだとアプリを一度アンインストールして、再度インストールしてからテストを実施するといった作業が必要だった。スナップショット機能を使えば、テスト前の状態でスナップショットをとることで簡単にテストを再度実施できる。

複数インスタンス

先ほどのスナップショットを用いて、同じエミュレーターを複数起動することができる。テストを同時に実行可能に。

エミュレーター起動時、 -read-only をつけることで、同じAVD でいくつもエミュレーターが起動できる。同時に起動した場合、書き込みが行われるまでRAMは共有されるので省メモリで動作する。

Headless mode

起動するには emulator ではなく emulator-headless コマンドを使う。