Flutterで開発していたiOS/Androidアプリの開発環境をアップデートしたので手順をまとめます。
確認環境
- Flutter 3.22.3 → 3.32.7
- macOS Sequoia 15.5
アップデートのメリット・デメリット
環境のアップデートには一定のリスクもあるため、そもそもアップデート実施自体の検討は必要です。
- メリット
- 新機能や性能向上が期待できる
- 不具合や脆弱性が修正される可能性がある
- デメリット
- かえって不具合や脆弱性が混入する場合がある(特に安定版でないベータ版などを導入した場合)
- 互換性が失われることで、これまで動いていたアプリケーションが正常に動かなくなる
一般的には性能やセキュリティの観点から環境の定期的なアップデートは推奨されます。
しかし環境の不具合や脆弱性でなくても、互換性や微妙な相性の問題でそれまで正常に動いていたアプリケーションが正常に動かなくなるということはあります。
特に大きなプロジェクトの場合には不具合の発見や修正が難しい場合もあるため、とにかく最新にすれば良いというわけではないと思います。
一方でアップデートを避け続けると、ますます最新の環境に更新しにくくなるというジレンマもあるので、アプリの今後のリリース予定などを考慮して戦略的に実施する必要があります。
アップデート手順
以下の手順は全てが必須というわけではありません。適宜必要なものだけを選び実施することができます。
OS、SDK、シミュレータ環境のアップデート
そもそも環境のアップデートの目的が、最新のiOS/Androidに対応するためということは多いと思います。その場合はXcodeやAndroid Studioなど各OS向けの開発キットのアップデートや、対象のシミュレータ環境のダウンロード、それに伴うPCのOS(Windows, mac等)や付随するソフトウェアのアップデートを個別に行います。
こちらについては必要な作業がケースバイケースなので詳細な手順については割愛します。
Flutter自体のアップデート
新しいバージョンのパッケージを使うためにはFlutter自体のバージョンアップが必要なことも多いため、最新のパッケージを使いたい場合にはFlutter自体のアップデートを行います。
まず現状のバージョンを確認し、元に戻す必要が出た場合に備えメモをしておきます。
flutter --version
チャンネル(安定版やベータ版の選択)を確認します。
flutter channel
デフォルトだとstable(安定版)になっているはずで、特別な理由がなければ安定版が推奨されます。チャンネルは以下のコマンドで切り替えられます。(チャンネル切り替えを実行すると環境のダウンロードが始まり時間がかかるので、必要が無ければ飛ばして問題ありません)
flutter channel チャンネル名(stable, betaなど)
以下のコマンドで実際に環境が更新されます。
flutter upgrade
特にエラーなど発生していなければ、再びバージョンを確認して正しく更新されているかを確認します。
flutter --version
Flutterパッケージのアップデート
以下のコマンドにより更新可能なパッケージをリストアップできます。
flutter pub outdated
Flutter自体のバージョンを最新にしていない、特定のパッケージのバージョンを固定しているなど、環境の状況によっては全て最新のパッケージが使えるわけではありませんが、それらを考慮した上で利用できるパッケージのバージョン情報がリストアップされます。
実際のアップデートは以下のコマンドで実施します。
flutter pub upgrade
一部パッケージのバージョンを固定していることで他のパッケージが古いままとなる場合、pubspec.yamlで指定しているバージョンの制約を緩めるか、オプションを指定して実行します。
flutter pub upgrade --major-versions
動作確認
環境が大きく変わった場合には動作に問題が発生する場合もあるため、順に確認を行います。
doctorコマンドの実行
環境周りを自動で確認できるdoctorコマンドを実行し、エラーが出ていないかを確認します。
flutter doctor
環境のクリーン
環境が大きく変わるとビルドに失敗することがあります。cleanコマンドを実施して不要な一時生成物をクリア、パッケージの再取得で改善することがあります。
flutter clean
flutter pub get
flutter run
静的解析の実施
安定動作のために静的解析を実施しておくと良いと思います。
Flutter自体のバージョンが変わったり、lintのバージョンアップによりこれまで出ていなかった警告が出る場合があります。
flutter analyze
テストの実施
テストを書いている場合には改めてテストを実施します。
flutter test
コメント