🌈

m1 macでAndroid Emulatorを起動させる

2021/07/17に公開

m1 macに対応したEmulatorをインストールしないとエラーが出る

(Flutterの場合は)dartファイルを開き、⌘+shift+Dを押して「実行とデバッグ」を押しましす。
するとデバイスを選択できるようになるので、create android emulatorを選択します。

そして失敗します。m1 macなので。

解決方法

Android Studioを開いて
configure > AVD Manager > Create Virtual Device...をクリックします。

上の画面になったら好きなスマホを一つ選んでNextを押してください。自分はpixel4にしました。

m1 macならABIにarm64-v8aと書かれているものをダウンロードしましょう。recommendedにない場合はOther Imagesを見てみましょう。Google apiとGoogle playバージョンの違いはよくわかりませんがGoogle playの方だけが実機のようにGoogle Playが使えるようなのでそちらを選びました。どちらを選んでも問題ないようです。APIレベルは30でも31でもSでもいいようです。(自分は31しか選べなかったのですが、31ではなぜかエラーが出ました、これは後述します)
ダウンロードが終わったらNextを押し、Finishを押します。AVD名の変更やデバイスの向きの調整が必要な人はFinish前に設定してください。自分はそのままにしました。
▷ボタンを押してEmulatorを起動します。起動できたら☓ボタンを押すか⌘+Qで終了します。

次にVSCodeで実行とデバッグを押してダウンロードしたデバイスが候補に出てくるのを確認してください。

起動してみるのも良いかもしれません。以上です。お疲れさまでした。
。。。で終わるはずだったが

スマホの画面は起動するがアプリがロードされない(Error: Emulator didn't connect within 60 seconds. )

Error: Emulator didn't connect within 60 seconds.
このエラーの解決策は英語中国語日本語すべてで探しても全部古い情報ばかりでキャッシュ削除など他の人は解決できた方法も自分には意味ありませんでした。当然ながらm1 macであるからです...

こんなエラーが発生...
解決までに3時間以上かかりました。
https://stackoverflow.com/questions/67230200/emulator-appearing-offline-on-m1-mac-after-the-last-update-of-arm64-v8a
この通りにまずarm64-v8a-S_r02-darwin.zipをダウンロードします。
https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-S_r02-darwin.zip
ここで注意してほしいのはAPIレベルが31の人もSを使用しないとエラーが出るのでSを使用します。
(Sの中でもrevision02じゃないとだめだと書かれています。今はどうかはわかりませんが)
以下の画像のパスに新規フォルダ「android-S」を作成し、中にさらに「google_apis_playstore」というフォルダを新規作成し、ダウンロードしたzipを解凍して配置します。


※人によってはパスが異なります。こればかりは各自で調べてください。。

Android Studioを再起動しconfigure > AVD Managerに入り、Create Virtual Device...をクリック。
あとは先程と同じ手順でデバイスを適当に選びNextを押すと以下の画面のようにAPIレベル「S」が追加されているはずです。

これを追加してください。
これでついにVSCodeでFlutterDemoAppの画面がでてエラーもなくなりました。
初回ビルドは結構時間がかかるので不安にならずに待ちましょう。
本当に苦しい三時間でした...

参考サイト:
https://nkaushik.com/mac/android-emulator-mac-m/
https://blog.inkdrop.info/running-a-react-native-app-on-android-emulator-in-m1-mac-76a16348d1e4
https://zhuanlan.zhihu.com/p/384730100

Discussion