FlutterでiOS/Android両方で実機実行するまでを試したので、その記録。
環境
- MacBook Pro (16-inch 2019)
- macOS Catalina 10.15.6
手順
環境設定
まず、ここから最新のFlutter SDKをダウンロードする
それを好きな場所に置き、解凍する。
そして、以下のようにパスを設定してflutterコマンドを使える状態にする
export PATH="$PATH:<flutter SDKを置いた場所>/flutter/bin"
その後、
flutter doctor
して、あとは指示に従って全部OKになるまで設定を行う。
アプリを作成
以下でアプリを作れる。
flutter create my_app # アプリの作成
cd my_app # 作ったら、実行するにはそのディレクトリに移動する必要がある
Android実機での実行
Androidの実機をつなげた上で
flutter devices
と実行すると
2 connected devices:
EML L29 (mobile) • xxxxxx • android-arm64 •
Android 8.1.0 (API 27)
NのiPhone (mobile) • yyyyyyy • ios • iOS
13.3.1
のように表示される。ここではiPhoneもつなげているので同時に表示されている。ここに出ているID (xxxxxxとかyyyyyyyの部分)を指定して、端末指定で実機実行ができる。
flutter run -d <デバイスID>
初回、すごく長く時間がかかることがある。私の場合実行後30分くらい時間を潰してから再度見たら終わっていた。それでも終わっていなかったらおそらくエラーとみて原因を探した方がよい。
iOS実機での実行
上記と同様、
flutter devices
でデバイスIDを調べ、
flutter run -d <デバイスID>
で実行する。しかし、プロジェクトが初期設定のままだと必ず
No valid code signing certificates were found
というエラーが出るので、それに続く案内に従って対処を行うことで実行できる。
iOS実機実行できないとき
"iproxy" cannot be opened because the developer cannot be verified.
といったエラーが出たときは下記が参考になる。
https://flutter.keicode.com/devenv/flutter-on-mac-catalina.php
どうしてもコマンドラインから実機実行できない場合は、直接プロジェクトをXcodeで開いて実行する。私のケースでは、いちどXcodeから実行すると、コマンドラインからも実行できるようになった。
シミュレータで実行するには
シミュレータを開いてからflutter run
。
iOSの例
open -a Simulator
flutter run
複数のシミュレータ・デバイスで同時にホットリロードする
複数のシミュレータを開き(あるいはデバイスを繋いでおき)、
flutter run -d all
参考: Unable to use 'flutter run' with both android & iOS emulators open #34547