はじめに
株式会社ピー・アール・オー Advent Calendar 2023の 8日目です。
Flutterのバージョンを切り替えたい
基本的には最新にバージョンアップしていきたい!
...けど、バージョンアップすると、今まで動いてたのに動かないかも問題。
...でも先延ばしにしすぎると、修正範囲多くなっちゃうかも問題。
というわけで、先延ばしにしてきましたが、いざやります!
調べるとFVMとか出てきますが、本記事ではgit checkoutで試しましたの記事となります。
自分の備忘録として、載せたいと思います。
前提条件
・Mac
・Flutterの実行環境があること
・動作確認できるFlutterプロジェクトがあること
やりたいこと
・現状v3.3.9で動いてるプロジェクトを、v3.16.2でも動くか確認したい
確認結果
・v3.3.9:もちろん動くOK
・v3.3.10:あんまり変更ないので、そのままのコードで動いたOK
・v3.16.2:結構なバージョンアップなので、動かなかったNG
・v3.3.9に戻す:動いたOK
・"最新"にするとどうなるか:記載時点ではv3.16.2になる(3.17.0.x.x.preではなく)
1.現在のバージョンを確認する
$ flutter --version
Flutter 3.3.9-0.0.pre.1 • channel stable •
https://github.com/flutter/flutter.git
Framework • revision bcff2f86cc (8 months ago) • 2023-03-31 10:29:54 +0900
Engine • revision 857bd6b74c
Tools • Dart 2.18.4 • DevTools 2.15.0
2.Flutterのフォルダを探して移動
$ which flutter
/Users/xxxx/develop/flutter/bin/flutter
$ cd /Users/xxxxx/develop/flutter
3.選べるバージョンを確認
$ git tag -l '3.3*'
3.3.0
3.3.0-0.0.pre
3.3.0-0.1.pre
3.3.0-0.2.pre
3.3.0-0.3.pre
3.3.0-0.4.pre
3.3.0-0.5.pre
3.3.1
3.3.10
3.3.2
3.3.3
3.3.4
3.3.5
3.3.6
3.3.7
3.3.8
3.3.9
(3.3.9が一番下に出てくるけど、実は3.3.10もあるっていう見逃しがちに注意。。)
$ git branch
* stable
4. v3.3.9 から v3.3.10 に変更する
あんまり変更ないので、そのままのコードで動くことを確認できたのでOK!
$ git fetch
$ git checkout 3.3.10
$ git branch
* (HEAD detached at 3.3.10)
stable
$ flutter --version
Flutter 3.3.10 • channel unknown • unknown source
Framework • revision 135454af32 (12 months ago) • 2022-12-15 07:36:55 -0800
Engine • revision 3316dd8728
Tools • Dart 2.18.6 • DevTools 2.15.0
5. v3.3.10 から v3.16.2 に変更する
結構なバージョンアップなので、そのままのコードで動かなくてNG。
$ git fetch
$ git checkout 3.16.2
$ git branch
* (HEAD detached at 3.16.2)
stable
$ flutter --version
Flutter 3.16.2 • channel [user-branch] • unknown source
Framework • revision 9e1c857886 (3 days ago) • 2023-11-30 11:51:18 -0600
Engine • revision cf7a9d0800
Tools • Dart 3.2.2 • DevTools 2.28.3
ちなみに動かなかったエラーと原因はこちらでした。
Downloading Web SDK...
Resolving dependencies...
Note: intl is pinned to version 0.18.1 by flutter_localizations from the flutter SDK.
See https://dart.dev/go/sdk-version-pinning for details.
Because xxxxxxx depends on flutter_localizations from sdk which depends on intl 0.18.1, intl 0.18.1 is required.
So, because xxxxxxx depends on intl ^0.17.0, version solving failed.
You can try the following suggestion to make the pubspec resolve:
* Try upgrading your constraint on intl: flutter pub add intl:^0.18.1
Exited (1)
pubspec.yamlのintlのバージョンを
エラーメッセージどおりにアップしたらOKに!
intl: ^0.17.0
intl: ^0.18.1
6. v3.16.2 から v3.3.9に戻す
動いてたバージョンに戻して、再度実行できることを確認できたのでOK!
$ git fetch
$ git checkout 3.3.9
7. 最新バージョンにしたい場合
2023/12/06時点で、最新を取得するとv3.16.2になりました。
$ git tag -l '3.16.2*'
3.16.2
$ git tag -l '3.16.3*'
$ git tag -l '3.17.*'
3.17.0-0.0.pre
3.17.0-0.1.pre
3.17.0-1.0.pre
3.17.0-10.0.pre
3.17.0-11.0.pre
3.17.0-12.0.pre
3.17.0-13.0.pre
3.17.0-14.0.pre
3.17.0-15.0.pre
3.17.0-16.0.pre
3.17.0-17.0.pre
3.17.0-18.0.pre
3.17.0-19.0.pre
3.17.0-2.0.pre
3.17.0-3.0.pre
3.17.0-4.0.pre
3.17.0-8.0.pre
3.17.0-9.0.pre
$ flutter channel stable
$ flutter upgrade
$ git branch
* stable
$ flutter --version
Flutter 3.16.2 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 9e1c857886 (5 days ago) • 2023-11-30 11:51:18 -0600
Engine • revision cf7a9d0800
Tools • Dart 3.2.2 • DevTools 2.28.3
最後に
先延ばしにしないで、ちょいちょい更新して確認していくのが一番です (๑و•̀ω•́)و✧