Flutter iOSビルドエラー: Value of optional type '(any StorageProvider)?' ...
当記事には複数のIssueリンクがありますが、Issue自体はすべて同じです。
それぞれ別のコメントを参照するため、URLを貼り付けてあります。
結論
target 'Runner' do
の中に$FirebaseSDKVersion = '10.22.0'
という行を挿入する
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
+ # Override Firebase SDK Version
+ $FirebaseSDKVersion = '10.22.0'
end
もしくは、pubspec.yaml
でよしなにライブラリのバージョンを設定する
はじめに
FlutterアプリのiOSビルドを試みた際、このようなエラーが発生して失敗しました。
同様の事例をWeb検索したりChatGPTに聞いたりするも、有益な情報は見つからず…
FirebaseのGitHubのIssueを探してみたところ、1件だけヒットしました。
原因
デフォルトではpod install
時に、特定の内部ポッドは最新版を、別のポッドは古い版をインストールしようとするため、バージョンの不整合が発生していた、という感じでしょうか?
解決策
そのため、内部で使うポッドのバージョンを揃えるために、先述の$FirebaseSDKVersion = '10.22.0'
の行を挿入することで解決できるようです。
注意点
紹介した方法のほかにも、pubspec.yaml
でよしなにパッケージのバージョンを設定することでも対応できるようです。しかしながら、各パッケージが要件とするDart/Flutter SDKのバージョンの問題もあり、私の環境ではすぐには対応できませんでした。
今回のPodでのSDKバージョンのオーバーライドは暫定的な対応にとどめておき、近いうちにFlutterそのもののバージョンを上げて、一緒にFirebase SDKのバージョンも上げてしまうことこそが根本的な問題解決につながるでしょう。
Podfileに設定を書き込むより、
pubspec.yaml
の一箇所に固まっている方が管理しやすいですし、できればPodfile
の修正ではなくpubspec.yaml
の変更で対応したいところです。しかし、それがうまくいかないのなら、根本的にFlutterバージョンを上げてしまい、問題のあるFirebase SDKバージョンと関わりをもたないようにすれば良いのです!
Discussion