Open4

FlutterFireのfirebaseライブラリバージョン問題2021.02

koji-1009koji-1009

主にiOSのFirebaseライブラリの関係で、firebase_coreのバージョンに非連続的なアップデートが入っている。

https://pub.dev/packages/firebase_core/changelog

このためfirebase_coreに依存している、flutterむけのfirebaseライブラリのバージョンを揃える必要がある。
特に v0.6.0でiOS 10がminimum support SDKになっている。

koji-1009koji-1009

各ライブラリのchangelogの記載をチェックすることで、どのfirebase_coreに依存しているのか、最近のバージョンでは把握することができる。

https://pub.dev/packages/firebase_auth/changelog

わかりやすいところでは、firebase_auth v0.19.0firebase_core v0.6.0に、firebase_auth v0.18.2firebase_core v0.5.1に対応している。
同じFirebase iOSのSDKを見ていれば(iOSでは)問題がないので、その間のバージョンはより低い方のSDKと合致していれば良いことになる。

koji-1009koji-1009

firebase_messegingがややこしいことになっているので、個別で記載してみる。

firebase_core v0.7.0 に対応するstableバージョンがリリースされていない

Firebase iOS v7.3.0に対応しているのがfirebase_messaging v8.0.0-dev.12となっており、stable版で対応するバージョンが存在していない。

https://github.com/FirebaseExtended/flutterfire/blob/firebase_messaging-v9.0.0-1.0.nullsafety.2/packages/firebase_messaging/firebase_messaging/CHANGELOG.md

このため、firebase_core v0.7.0に対応するバージョンに更新しようとしても、1つだけ.dev付きで対応する必要がある、と公式に明言されていたりする。
リリースしてくれ。

https://github.com/FirebaseExtended/flutterfire/issues/4955#issuecomment-777416135

なお、firebase_messaging v8.0.0-dev.12ではAPIの破壊的な変更が入っている。

特にBackground Notificationの処理周りがAndroidで大きく変わっており、動作テストが必須の修正な雰囲気がある。アップデートを試してみたところ、困ったことにBackgroundでFlutter PluginをAndroid側でbindingする処理に影響があり、Backgroundで通知を受けた時にshared_preferencesへのアクセスをしている処理が何事もなかったかのように動作しなくなっている雰囲気があった。

ちょっと時間ができたら調査しておきたいが、nndb対応がされたfirebase_messaging v9.0.0系のリリース準備がすでに進んでいるので躊躇せざるを得なかったりもする。
準備中のv9系では、v8系でdeprecatedになったAPIが削除されているので、stable版のリリースをしようとするとコードの修正が必須になりそうだ。ちょっと利用者側の方を向いて欲しかったりする。とてもつらい。

migration guideが正しくない

https://github.com/FirebaseExtended/flutterfire/issues/4885#issuecomment-771586791

どうやらmigration guideに記載されているバージョンは自動生成されているらしく、migration guideの通りのバージョンを指定するとビルドができない。この状態は修正する予定がないらしく、また2021年3月3日に発表されるであろうnndb対応がされたバージョンが出るまで、今の状況が続きそうな雰囲気がある。