
背景
前回flutter doctorの実行で躓いてしまいました。今回はflutter doctorで状況を確認し、開発環境を構築するところまで行いたいと思います。
flutter doctorの実行
まずflutter doctorを実行して状況を確認します。
1 | $ ./bin/flutter doctor |
バツと!になっている箇所について対応が必要そうです。
Xcodeのインストール
まずは簡単そうなXcodeのインストールから行います。
App Storeからダウンロード
まずApp StoreからXcodeをインストールします。
ライセンスに同意する
ライセンスに同意する必要があるので、以下のコマンドを実行します
1 | $ sudo xcodebuild -license |
するとライセンスに関する文面が表示されます。スペースキーでページ送りをして、最後に以下の表示になったらagreeとタイプしてエンターキーを押します。
1 | By typing 'agree' you are agreeing to the terms of the software license agreements. Type 'print' to print them or anything else to cancel, [agree, print, cancel] agree |
状況確認
Xcodeがインストールできたので、再度flutter doctorで確認します。
1 | $ flutter doctor |
ということで、CocoaPodsのインストールが必要でした。
CocoaPodsのインストール
先程のflutter doctorのメッセージにあるインストールのドキュメントを見てみます。
冒頭にYou can use a Ruby Version manager, however we recommend that you use the standard Ruby available on macOS unless you know what you're doing.とあるので、グローバルにインストールされているRubyを利用しようと思います。
1 | $ which ruby |
グローバルにインストールされているRubyが2.6.3ということですね。こちらにインストールします。
1 | $ sudo /usr/bin/gem install cocoapods |
エラーが発生してしまいました。メッセージを確認すると、ffi.hが見つからないということのようです。
libffiがインストールされていないからかもしれないので、インストールしてみます。
1 | $ brew install libffi |
インストールできました。しかし、再度cocoapodsをインストールしようとしても同じエラーで止まります。
エラーログを見てみると、ruby/config.hが見つからないということで、シンボリックリンクを作成してみました。
1 | $ cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby |
すると、内容は変わったのですが、いまだにエラーは出ます。
1 | current directory: /Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/ext/ffi_c |
よくみると、universal-darwin20と書かれています。Rubyのバージョンにもそのように書いてありました。しかし、実際に存在するディレクトリはuniversal-darwin21です。この記事を参考に、シンボリックリンクを作成します。
1 | $ cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ |
再度試します
1 | $ sudo gem install cocoapods |
無事インストールできました。
flutter doctorで確認します。
1 | $ ./bin/flutter doctor |
Xcodeはクリアしました。
Android toolchainのインストール
次にAndroid toolchainをインストールします。flutter doctorの出力にあるサイトからダウンロードしてインストールします。
ダウンロードしたdmgをダブルクリックし、アプリケーションアイコンをアプリケーションディレクトリにドラッグ&ドロップします。
インストールが終わったら、On first launch it will assist you in installing the Android SDK components.と書かれているので、Android Studioを起動します。
利用規約に同意してその他のコンポーネントをインストールします。
ここまで終わったらflutter doctorで確認します。
1 | $ ./bin/flutter doctor |
まだ足りないようでした。メッセージに従ってコマンドを実行していきます。
Android SDK Command-line Toolsのインストール
sdkmanagerのパスがわからなかったので、GUIで設定しました。
Android Studioを起動し、メニューのAndroid Studio->Preferenceを選択し、左メニューのAppearance & Behavior->System Setting->Android SDKを選択します。
右のタブでSDK Toolsを選択し、下に表示される一覧の中にAndroid SDK Command-line Tools (latest)にチェックを入れ、右下のApplyボタンをクリックします。
するとダウンロードとインストールが始まります。終わったらOKをクリックします。
ライセンスの同意
次にライセンスに同意します。メッセージに記載のあるコマンドを実行します。
1 | $ ./bin/flutter doctor --android-licenses |
だいぶ時間がかかりますし、うまくいってないようなメッセージが出ますが、結果的に全てのライセンスに同意できています。
それではflutter doctorで確認します。
1 | $ ./bin/flutter doctor |
もう少しですね…
NO_PROXYの設定
NO_PROXYの設定はコマンドを実行するシェルで環境変数を設定するのだろうと思うので設定してみます。
~/.zshrcにNO_PROXYを設定します
1 | NO_PROXY=localhost,127.0.0.1,::1 |
シェルを再起動します
1 | $ exec $SHELL -l |
環境変数を確認します
1 | $ env | grep -i no_proxy |
設定できました。
HTTP Host Availabilityの対応
環境変数のPROXYの設定が悪さをしていて、外部へのアクセスができてなかったので、unsetコマンドで削除しました。
最後にflutter doctorで確認します。
1 | $ ./bin/flutter doctor |
なぜかまたライセンスで!になっているので、コマンドを実行します。(やはり先程はエラーになっていたようです)
1 | $ ./bin/flutter doctor --android-licenses |
ライセンスが表示されるのでyを押して同意します。
今度こそ最後にflutter doctorで確認します。
1 | $ ./bin/flutter doctor |
すべてクリアできました!
まとめ
flutter doctorですべてOKになるところまで実施しました。
大きく時間がかかったのはcocoapodsのインストールだけでした。こちらもMacのバージョンを上げたりしていなければ(darwin20とdarwin21の違い)、スムーズに進んだと思います。
とりあえず環境構築はできました。次からはモバイルアプリの開発を進めていきたいと思います。

