はじめに
念願のM1macbookを手に入れたので、諸々の設定を終えた後ウキウキしながらAndroid Studioの環境構築に取り掛かりました。
インストール自体は問題なくできたのですが、その後エミュレーターや実機でアプリを実行するときに色々とエラーに遭遇しました。(私がインストールしたArctic Foxパッチ4ではM1でも動作できるよう対応済みだったようですが、それでも詰まってしまいました。)
これからM1でAndroid Studioを入れる方もいらっしゃるかと思うので、備忘録代わりに記事を書いてみようと思います。
※エラーログなどきちんと記録していないので、大部分を記憶に頼りながら書いています。(ほとんど自分用のメモです...)もし間違いなどありましたらご指摘いただけますと幸いです。
※記事を書き慣れていないためわかりにくい点もたくさんあるかと思います。それ以前に超絶プログラミング初心者です。お手柔らかにお願いいたします...🙏
実行環境
項目 | 情報 |
---|---|
PC | MacBook Pro (14-inch,2021) |
CPU | Apple M1 Pro 10-core |
GPU | Apple M1 Pro 16-core |
OS | macOS Monterey (12.0.1) |
Android Studio | Arctic Fox 2020.3.1 Patch4 |
その1 インストール後、Loading devices...が出る
上記の端末名が表示されているところが「Loading devices...」の表示になったままびくともしなくなってしまいました。(スクショ撮り忘れた)
やったこと
- 一旦Android Studioをアンインストール
- こちらのサイトを参考にバシバシコマンドを打っていきました。作成済みのプロジェクトもrm -Rで削除
- 再度公式からインストールし、セットアップ
- 「SDK missing」が出たりするが、とりあえず案内に従ってnextを押していく
-
再度インストールすると上記の部分が「no devices」になるので、AVBマネージャーからAVDを追加する
-
3.で追加したAVDが表示されるようになった!
※Twitterを見ている限りだと再起動だけで直った方もいるようです。(私は直りませんでした)
※AVDを選択時、以下の画像のような形で「x86を使った方がいいよ!」と言われますが、現時点(2022年1月)ではM1チップでx86は使えない様子です(多分)。無視して適当なAVDを入れましたが、今のところ動作も実行速度も問題ないです。
その2 エミュレーター上でアプリを実行しようとするとCause: error=86, Bad CPU type in executable.
が出る
こちらもstack overflowを参考に解決
やったこと
- コマンド上で
$ softwareupdate --install-rosetta
を打ったらこちらのエラーは表示されなくなりました。
しかし次の問題が...
その3 : エミュレーター上でアプリを実行しようとするとCould not automatically detect an ADB binary. Some emulator functionality will not work until a custom path to ADB is added in the extended settings page.
ダイアログが出る
こちらの解答をもとに解決しました。
やったこと
- 画面上部のツールバーの「tools」 > 「SDK Manager」を開く
- 「SDK Tools」タブに移動し、「Android SDK Platform-Tools」のチェックを外す
- Applyをクリックし、変更を適用させる
- 今回は変更適用途中で固まってしまったため、一旦Android Studioを再起動させました。本来ならチェックを外してapplyしてから、もう一度チェックをつける予定でした
- AndroidStudioを立ち上げ直したらダイアログが消え、無事アプリが起動できるようになった!
- 上記で固まってしまったせいか、再起動した時「Android SDK Platform-Tools」のチェックはついたままでした。固まる前にうまいこと余分なデータか何かが消えてくれたのかもしれません(謎)
その他詰まった点
-
adbコマンドがM1では使えない
- 色々ググっていると
adb devices
などのabdコマンドを使う方法が出てきますが、M1ではadbコマンドを使えないようです。
(実行しようとするとbad CPU type in executable: adb
と怒られてしまいました)
- 色々ググっていると
-
実機を検知してくれない
- 元々実機でビルドしたかったので開発者モードをオンにした状態で接続していたのですが、ググって出てきた対処法を試しても検知してくれませんでした。こちらの問題はその2かその3あたりで直りました。