きっかけ
普段はMacにAndroid実機をUSB接続してデバッグ実行をしていたため、気にしていなかった。
ある日、外出先で実機を持ってきておらず「エミュレーターがあるしね〜」と公式から配布されているハードウェアプロファイルを読み込んで仮想デバイスを作成したところエラーで動かず。
単純な話だけど割と焦ったし、探していた時に見つけた情報も最新ではなく苦戦したので残しておく。
環境
- 端末:MacBook Air
- OS: Big Sur 11.4(Apple M1)
- Arctic Fox 2020.3.1 Patch 2
対処法(解決に至らなかったもの)
調べているなかでいくつかの対応方法が見つかった。
解決できなかったが方法案としてメモしておく。
-
メモリ不足
他に起動して負荷をかけているアプリもなく、8GBのMacbookAirならそれはないだろうということで今回の原因ではなさそうという結論 -
Intel x86 Emulator Accelerator (HAXM installer) が必要
が、これもインストールに失敗する。
必要なのか?と思って調べるとエミュレーターのパフォーマンス向上に活躍するらしい?
起動に必須ではなさそうなので一旦置き
解決
ようやく辿り着いた対処法。
環境(再度)
- 機種:MacBook Air
- OS: Big Sur 11.4(Apple M1) ←これ重要だった
- Arctic Fox 2020.3.1 Patch 2 ←これは原因なのか分からない
まずはAndroidStudioをアップデート(→2021.2.1 Patch 1)
これは正直、今思うと必要だったのか?とも思う。
解決した情報記事にあるAndroidの公式ページのApple Silicon対応エミュレータは使用しなかったのだがその理由として、リリースノートを確認している中で、
31.2.7(2022年2月1日) [バグの修正] M1 マシンでエミュレータがハングアップするエラー
とあったので、最新版(2021.2.1 Patch 1)なら動くのか?と思ったからだ。
というわけで、まずは2021.2.1 Patch 1にAndroidStudioを更新した。
M1はABIがarm64のものを使え
結果としては初歩的なことだった。お前M1だったな!本当に大失念。
CPUに詳しいひとなら初歩的なのかもしれないが、正直なところ分からない。
64bitと32bitは違う、x86_64ってややこしいなとか思う自分レベルはやらかすミスだろう。
そう思いたい。
ハードウェアプロファイルからデバイスを選択後、システムイメージでABIがarm64のものを選択。
できた仮想デバイスを実行すると…
やったー起動した!!!
x86・x86_64を選んで作った仮想デバイスだったから動かなかったようだ。
Windows環境ではこれで動いていたので落とし穴だった。
違いが分からない初心者で恥ずかしい。
これで実機がなくてもデバッグ実行できる。
Android Emulatorは不要になったのか?
不要になるのか(なったのか)、正確なことは不明。
古いバージョンの時点でABIが違うことに気付けなかったため、2020.3.1 Patch 2環境でのABIがarm64のデバイスエミュレート確認が出来ていない。
ただ、今回の対応で自M1Macに別途エミュレータをインストールせずともAndroid Studioからエミュレートできた、という報告はできる。
M1マシンでエミュレータがハングアップするエラーは修正されているとすれば使用バージョンが古いM1ユーザーは最新化を検討してもいいのかもしれないな、と。
最後に
スクショでお気付きかもしれませんが、GoogleGlassの仮想環境を構築していました。
GoogleGlassのユーザーコミュニティに参加したのでこれから気付いたことは情報として残していけたらと思います。
コミュニティではオフラインイベントで実機に触る機会があったりします。
興味があればぜひ参加してみてください。