[Flutter]M1チップ搭載Macにイチから環境構築する


M1チップ搭載Macに全くの更地の状態からFlutterの環境構築をしたので覚え書き。

## 環境

* OS: macOS Big Sur(11.2.2)
* モデル: MacBook Air(M1, 2020)

## ダウンロード or インストール

本手順でダウンロード or インストールするものは以下の通り（登場順）

* Homebrew
* Git
* XCode
* CocoaPods
* JDK
* Android Emulator Apple Silicon
* Android Studio（プラグイン：Flutter, Dart）
* Flutter SDK


## 手順

(1) ターミナルを起動し、パッケージ管理システムであるHomebrewをインストール

```
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

(2) Gitをインストール（Xcode付属のGitで大丈夫っぽいが、いずれ使うので入れておく）

```
% brew install git
```

(3) [Mac App Store](https://apps.apple.com/jp/app/xcode/id497799835?mt=12)より、Xcodeをダウンロード
→ 自分の場合は、1時間ほどかかりました。

(4) ターミナルより、以下の2つのコマンドを実行。

```
% sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
% sudo xcodebuild -runFirstLaunch
```

(5) iOSライブラリ管理ツールであるCocoaPodsをインストール。

```
% sudo gem install cocoapods
```

(6) [Java SE Downloads | Oracle](https://www.oracle.com/java/technologies/javase-downloads.html)より、Java SE 8のJDKをダウンロード、インストール。

Java SE 8欄の「JDK Download」をクリックした遷移先の「macOS x64」の行の「jdk-8u281-macosx-x64.dmg」をクリックすればOK。
※Oracleのアカウント登録が必要になります。

ダウンロードが完了したら、インストーラを起動して、ウィザードの指示に従ってインストール。

(7) [Android Emulator Apple Silicon Preview | Android Developers](https://androidstudio.googleblog.com/2020/12/android-emulator-apple-silicon-preview.html)に記載の[741g/android-emulator-m1-preview | GitHub](https://github.com/741g/android-emulator-m1-preview/releases/tag/0.1)より、M1チップ搭載Mac用のエミュレータをダウンロードしておきます。

M1チップ搭載Macの場合、これがないと、「Your CPU does not support VT-x」エラーが発生して、Android Studioのインストールに失敗してしまうので、要注意！

もう少し詳細な手順を知りたい方は、
[M1のMacbookでAndroidエミュレータを起動する方法 | Tamappe Life Log](https://tamappe.com/2020/12/26/m1-macbook-android/)
を参考に。

(8) [Android Studio](https://developer.android.com/studio?hl=ja)をダウンロード、インストール。

(9) [macOS install | Flutter](https://flutter.dev/docs/get-started/install/macos)より、Flutter SDKをダウンロード。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/7e12df58-b0ac-5d89-f33f-05922bc6e7e8.png)

(10) ローカル環境の任意の場所に解凍（下記は、ホームディレクトリ配下のdevelopディレクトリに配置する場合）

```
cd ~/development
unzip ~/Downloads/flutter_macos_2.0.3-stable.zip
```

(11) .bash_profileにPATHを設定。

```bash
vi ~/.bash_profile
# 以下を記入し保存
export PATH="$PATH:/development/flutter/bin"
# シェル設定を反映
source ~/.bash_profile
```

(12) 以下のコマンドを実行し、Androidライセンスを受諾。

```
% flutter doctor --android-licenses
```

(13) 以下のコマンドを実行し、依存性が解決しているか確認。

```
% flutter doctor        
objc[998]: Class AMSupportURLConnectionDelegate is implemented in both ?? (0x202a80188) and ?? (0x117d402b8). One of the two will be used. Which one is undefined.
objc[998]: Class AMSupportURLSession is implemented in both ?? (0x202a801d8) and ?? (0x117d40308). One of the two will be used. Which one is undefined.
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.0.3, on macOS 11.2.2 20D80 darwin-arm, locale
    ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.1)
[✓] Connected device (1 available)

• No issues found!
```

上記のように、全ての項目が「✓」となればOK!
「✗」や「!」が出たら、メッセージに従って修正します。

(14) Android Studioを起動し、「Configure」> 「Plugins」とクリックして、Flutterプラグインを検索し、インストールします。
途中でDartのプラグインもインストールするか聞かれるので、合わせてインストール。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/35d33237-53ee-97d5-1f95-e676a8dec27b.png)

(15) Android Studioを再起動して、「Create New Flutter Project」が追加されていることを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/0b35692e-6415-69bc-c8f7-48cde61f4e95.png)

以上で、環境構築は完了！


## 終わりに
手順(7)以外は、Intelプロセッサ搭載Macでも同じはず。
JDKのところで地味にはまって、時間をとってしまったけどなんとか完了。
これで晴れて開発に着手できそうです！

## 参考
* [macOS install | Flutter](https://flutter.dev/docs/get-started/install/macos)
* [Set up an editor | Flutter](https://flutter.dev/docs/get-started/editor)
* [The Missing Package Manager for macOS (or Linux) | Homebrew](https://brew.sh)
* [Download for macOS | Git](https://git-scm.com/download/mac)
* [Xcode | Mac App Store プレビュー](https://apps.apple.com/jp/app/xcode/id497799835?mt=12)
* [COCOAPODS](https://cocoapods.org)
* [Android Studio リリースノート | Android Studio](https://developer.android.com/studio/releases?hl=ja)
* [PATHを通すために環境変数の設定を理解する (Mac OS X) | Qiita](https://qiita.com/soarflat/items/d5015bec37f8a8254380)
* [.bash_profileと.bashrcについて | Qiita](https://qiita.com/shyamahira/items/260862743e4c9794b5d2)