😵‍💫

Flutter iOSビルドエラー: Value of optional type '(any StorageProvider)?' ...

2024/10/29に公開

当記事には複数のIssueリンクがありますが、Issue自体はすべて同じです。
それぞれ別のコメントを参照するため、URLを貼り付けてあります。

結論

target 'Runner' doの中に$FirebaseSDKVersion = '10.22.0'という行を挿入する

Podfile
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でよしなにライブラリのバージョンを設定する
https://github.com/firebase/flutterfire/issues/12429#issuecomment-1987273394

はじめに

FlutterアプリのiOSビルドを試みた際、このようなエラーが発生して失敗しました。
同様の事例をWeb検索したりChatGPTに聞いたりするも、有益な情報は見つからず…

FirebaseのGitHubのIssueを探してみたところ、1件だけヒットしました。

https://github.com/firebase/flutterfire/issues/12429

原因

デフォルトではpod install時に、特定の内部ポッドは最新版を、別のポッドは古い版をインストールしようとするため、バージョンの不整合が発生していた、という感じでしょうか?

https://github.com/firebase/flutterfire/issues/12429#issuecomment-1978028367

解決策

そのため、内部で使うポッドのバージョンを揃えるために、先述の$FirebaseSDKVersion = '10.22.0'の行を挿入することで解決できるようです。

https://github.com/firebase/flutterfire/issues/12429#issuecomment-1977867649

注意点

紹介した方法のほかにも、pubspec.yamlでよしなにパッケージのバージョンを設定することでも対応できるようです。しかしながら、各パッケージが要件とするDart/Flutter SDKのバージョンの問題もあり、私の環境ではすぐには対応できませんでした。
https://github.com/firebase/flutterfire/issues/12429#issuecomment-1987273394

今回のPodでのSDKバージョンのオーバーライドは暫定的な対応にとどめておき、近いうちにFlutterそのもののバージョンを上げて、一緒にFirebase SDKのバージョンも上げてしまうことこそが根本的な問題解決につながるでしょう。

Podfileに設定を書き込むより、pubspec.yamlの一箇所に固まっている方が管理しやすいですし、できればPodfileの修正ではなくpubspec.yamlの変更で対応したいところです。しかし、それがうまくいかないのなら、根本的にFlutterバージョンを上げてしまい、問題のあるFirebase SDKバージョンと関わりをもたないようにすれば良いのです!

Discussion