FlutterFire 5.0への移行で直す4項目|App Check・Data Connect・Kotlin Gradleプラグイン・minSdk 24
FlutterFire 5.0が公開され、App Check・Data ConnectとAndroidのビルド設定に変更が入った
Firebaseは2026年10月15日、Flutter向けのFirebaseパッケージ群(FlutterFire)をまとめて更新し、バージョン一式をそろえた「BoM 5.0.0」を公開しました。firebase_core 5.0.0、firebase_auth 7.0.0、firebase_app_check 0.5.0など、主要なパッケージがそろって大きな版に上がっています。
リリースノートには、App Checkの初期化の引数名の変更や、Data Connectの引数の削除など、既存のコードがそのままではビルドできなくなる変更(破壊的変更)が並んでいます。AndroidではFirebase Android SDKの新しい版(BoM 35)が使われ、Firebaseのライブラリが求めるAndroidの下限(minSdk)が、Android 7.0にあたるAPIレベル24に上がりました。アプリ側の設定も24以上が必要です。
この記事では、Flutter 3.38.5で作った最小のサンプルアプリを4.x系から5.0へ上げ、静的解析とAndroidのビルドで実際に出たエラーと直し方を順に説明します。Kotlin Gradleプラグインの更新が必要になる条件も、ビルドを繰り返して確かめました。読み終えると、自分のアプリで直す場所と、更新する順番を決められます。
移行で直す4項目
Dartのコード2項目と、Androidのビルド設定2項目を直す
Dart:App Check
providerAndroidなどへ
引数名に加え、渡す値も列挙型からProviderクラスに変わる。
Dart:Data Connect
auth・appCheckを削除
instanceForに渡していた2つの引数を消すと直る。
Android:Kotlin Gradleプラグイン
2.3以上へ上げる
firebase_auth(Data Connect経由を含む)を使うアプリで必要。jvmTargetの書き方も変える。
Android:minSdk
24以上にする
24未満のままだと、マニフェストの統合でビルドが止まることがある。
検証に使ったバージョンと環境
サンプルは flutter create で作った新規プロジェクトで、Firebaseのプロジェクト設定ファイル(google-services.json)は入れていません。確かめたのは、コードの静的解析(flutter analyze)と、Android向けのデバッグ版APKのビルドまでです。以下では、移行前の版(BoM 4.x系。firebase_core 4.x)を「4.x系」と呼びます。
| パッケージ | 移行前(4.x系) | 移行後(BoM 5.0.0) |
|---|---|---|
| firebase_core | 4.15.0 | 5.0.0 |
| firebase_app_check | 0.4.8 | 0.5.0 |
| firebase_auth | 6.7.0 | 7.0.0 |
| firebase_data_connect | 0.3.3 | 0.4.0 |
2026年10月21日に確認。Apple M4のMac(macOS 27.0.1)、Flutter 3.38.5、Dart 3.10.4、Android Gradle Plugin 8.11.1、Gradle 8.14。
FlutterFire 5.0の一式を使うには、Flutter 3.27.0以上とDart 3.6.0以上が必要です。Flutterが古い場合は、先にFlutter本体を上げておきます。
App CheckとData Connectは、引数の書き換えが必要になった
App Checkは、正規のアプリからのリクエストかどうかをFirebase側で確かめる仕組みです。アプリの起動時に activate を呼び、Android、iPhone、Webのそれぞれで使う確認方法(プロバイダ)を指定します。4.x系までは次のように書いていました。
import 'package:firebase_app_check/firebase_app_check.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_data_connect/firebase_data_connect.dart';
import 'package:flutter/foundation.dart';
// FlutterFire 4.x までの書き方(移行前)
Future<void> activateAppCheck() async {
await FirebaseAppCheck.instance.activate(
webProvider: ReCaptchaV3Provider('recaptcha-v3-site-key'),
androidProvider:
kDebugMode ? AndroidProvider.debug : AndroidProvider.playIntegrity,
appleProvider: kDebugMode ? AppleProvider.debug : AppleProvider.appAttest,
);
}
FirebaseDataConnect connectDataConnect() {
return FirebaseDataConnect.instanceFor(
connectorConfig: ConnectorConfig('asia-northeast1', 'default', 'my-service'),
auth: FirebaseAuth.instance,
appCheck: FirebaseAppCheck.instance,
);
}
このコードは、4.x系(firebase_app_check 0.4.8)の時点で非推奨の書き方になっていて、flutter analyze では5件の注意(info)が出ます(下の出力では1件だけ抜粋)。パッケージを5.0へ上げると、同じ5件がエラーに変わり、ビルドできなくなりました。
# 4.x系(移行前)
info • 'androidProvider' is deprecated and shouldn't be used. Use providerAndroid instead. This parameter will be removed in a future major release • lib/firebase_setup.dart:10:5 • deprecated_member_use
# 5.0へ上げた直後
error • The named parameter 'webProvider' isn't defined • lib/firebase_setup.dart:9:5 • undefined_named_parameter
error • The named parameter 'androidProvider' isn't defined • lib/firebase_setup.dart:10:5 • undefined_named_parameter
error • The named parameter 'appleProvider' isn't defined • lib/firebase_setup.dart:12:5 • undefined_named_parameter
error • The named parameter 'auth' isn't defined • lib/firebase_setup.dart:19:5 • undefined_named_parameter
error • The named parameter 'appCheck' isn't defined • lib/firebase_setup.dart:20:5 • undefined_named_parameter
直すときは、引数名を providerWeb、providerAndroid、providerApple に変えたうえで、渡す値も差し替えます。以前は AndroidProvider.playIntegrity のような列挙型の値を渡していましたが、新しい引数には AndroidPlayIntegrityProvider() のようなクラスのインスタンスを渡します。
4.x系までの値(列挙型)
- AndroidProvider.debug
- AndroidProvider.playIntegrity
- AppleProvider.debug
- AppleProvider.appAttest
- AppleProvider.deviceCheck
5.0で渡す値(クラス)
- AndroidDebugProvider()
- AndroidPlayIntegrityProvider()
- AppleDebugProvider()
- AppleAppAttestProvider()
- AppleDeviceCheckProvider()
Data Connect(Firebaseのデータベース接続サービス)の FirebaseDataConnect.instanceFor は、auth と appCheck の引数がなくなりました。5.0ではFirebaseアプリの設定から自動で取得するので、2つの引数を消せば直ります。直したあとのコードは次のとおりで、flutter analyze の結果は「No issues found!」になりました。
import 'package:firebase_app_check/firebase_app_check.dart';
import 'package:firebase_data_connect/firebase_data_connect.dart';
import 'package:flutter/foundation.dart';
// FlutterFire 5.0 の書き方(移行後)
Future<void> activateAppCheck() async {
await FirebaseAppCheck.instance.activate(
providerWeb: ReCaptchaV3Provider('recaptcha-v3-site-key'),
providerAndroid: kDebugMode
? const AndroidDebugProvider()
: const AndroidPlayIntegrityProvider(),
providerApple: kDebugMode
? const AppleDebugProvider()
: const AppleAppAttestProvider(),
);
}
FirebaseDataConnect connectDataConnect() {
return FirebaseDataConnect.instanceFor(
connectorConfig: ConnectorConfig('asia-northeast1', 'default', 'my-service'),
);
}
この新しい書き方は、4.x系(firebase_app_check 0.4.8、firebase_data_connect 0.3.3)に戻しても「No issues found!」でした。パッケージを上げる前にコードだけ先に書き換えておけば、5.0へ上げた時点でDart側のエラーが出ない状態にできます。
firebase_authを使うアプリは、Kotlin Gradleプラグインの更新が必要だった
Dartのコードを直したあと、Android向けにビルド(flutter build apk --debug)すると、Kotlinのコンパイルで止まりました。Flutter 3.38.5の flutter create が作るプロジェクトでは、Kotlin Gradleプラグイン(org.jetbrains.kotlin.android。KotlinのコードをビルドするためのGradleの部品)の版が2.2.20になっています。
e: .../firebase-auth-25.0.0-api.jar!/META-INF/...kotlin_module Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 2.4.0, expected version is 2.2.0.
* What went wrong:
Execution failed for task ':firebase_auth:compileDebugKotlin'.
firebase_auth 7.0.0がAndroidで使うFirebase Authのライブラリ(firebase-auth 25.0.0)が、Kotlin 2.4の形式で作られているためです。Kotlinの互換性の方針では、コンパイラは1つ先の版の形式をおおむね読めるものの保証はなく、2つ先の版の形式は読めないとされています。今回の検証でも、2.2.20では失敗し、2.3.0で成功しました。Firebase Android SDKのリリースノートがfirebase-auth 25.0.0の破壊的変更として挙げているのはminSdkの引き上げで、Kotlinの版の条件はビルドして分かりました。
どの構成で起きるかを切り分けるため、条件を変えて4通りビルドしました。
構成ごとのAndroidビルドの結果
成功
4.x系+firebase_auth、プラグイン2.2.20
成功
5.0でfirebase_coreとfirebase_app_checkだけ、プラグイン2.2.20
失敗
5.0+firebase_auth、プラグイン2.2.20(Data Connectも内部でfirebase_authを使う)
成功
5.0+firebase_auth、プラグイン2.3.0とcompilerOptionsへの変更
いずれも flutter build apk --debug で確認した。5.0の3通りは、直前に flutter clean を実行した。
直し方は2段階です。まず android/settings.gradle.kts で、Kotlin Gradleプラグインの版を2.3.0に上げます。
plugins {
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
id("com.android.application") version "8.11.1" apply false
id("org.jetbrains.kotlin.android") version "2.3.0" apply false
}
プラグインを上げただけでビルドすると、今度は android/app/build.gradle.kts の書き方でエラーになります。flutter create の雛形にある kotlinOptions { jvmTarget = ... } の書き方が、2.3.0と2.4.0のどちらでもエラーとして扱われました。
e: .../android/app/build.gradle.kts:19:9: Using 'jvmTarget: String' is an error. Please migrate to the compilerOptions DSL. More details are here: https://kotl.in/u1r8ln
android { } の中の kotlinOptions のブロックを消し、ファイルの最上位に kotlin { compilerOptions { } } のブロックを足します。この変更のあと、firebase_authを含む5.0の構成でもAPKのビルドが成功しました。プラグイン2.3.0とこの書き方の組み合わせは、4.x系のパッケージ(新しい書き方のDartコード)でもビルドが成功したので、パッケージを上げる前に済ませておけます。
// android { ... } の中から削除する
// kotlinOptions {
// jvmTarget = JavaVersion.VERSION_17.toString()
// }
// android { ... } の外(ファイルの最上位)に追加する
kotlin {
compilerOptions {
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17)
}
}
パッケージの版を切り替えた直後のビルドでは、古いビルド結果が残っていたために、プラグインのクラスが見つからないという別のエラーが一度出ました。版を上げたら、flutter clean をしてからビルドすると、エラーの原因を取り違えずに済みます。
minSdkが24未満だと、マニフェストの統合でビルドが止まることがある
Firebase Android SDKのリリースノートは、firebase-auth 25.0.0とfirebase-appcheck 20.0.0の破壊的変更として、minSdkがAPIレベル24に上がったことを挙げています。サンプルの android/app/build.gradle.kts で minSdk = 23 を指定し、Gradleで直接ビルドすると、次のエラーで止まりました。
> Manifest merger failed : uses-sdk:minSdkVersion 23 cannot be smaller than version 24 declared in library [:firebase_app_check] ... as the library might be using APIs not available in 23
一方、Flutter 3.38.5の flutter build を使うと、ビルドの前に「Upgrading build.gradle.kts」と表示され、minSdk = 23 が minSdk = flutter.minSdkVersion(Flutter 3.38.5では24)に書き換えられて、ビルドは成功しました。これはFlutterのツール自体の機能で、FlutterFireの版には関係しません。Flutter 3.38.5のソースでは、書き換えの対象は、appの build.gradle(.kts) に16〜23の数値を直接書いた行だけです。
minSdkを変数やプロパティで指定している場合や、CIで ./gradlew を直接実行している場合は、この書き換えが働かず、上のエラーで止まります。flutter.minSdkVersion の値もFlutterの版で変わるので、使っているFlutterで確かめ、24未満なら自分で minSdk = 24 以上を書きます。minSdkを24にすると、Android 6.0(APIレベル23)以前の端末にはアプリを配信できなくなるので、Google Playの配信対象やCIのテスト端末にAndroid 6.0の端末がある場合は、その扱いも決めておきます。
FlutterFire 5.0へ上げる手順
ここまでの結果をもとに、エラーを1種類ずつ片付けられる順番にまとめました。
手順1 4.x系の最新版でコードを直す
4.x系の最新版(firebase_app_check 0.4.8など)では新しい引数が使えるので、まずそこまで上げる。flutter analyze で deprecated_member_use の注意を探し、App CheckとData Connectを新しい書き方に直す。
手順2 Androidのビルド設定を直す
minSdkを24以上にする。firebase_authかData Connectを使うなら、Kotlin Gradleプラグインを2.3以上にして、jvmTargetをcompilerOptionsの書き方へ移す。ここまでは4.x系のままビルドできる。
手順3 パッケージを上げる
FlutterFireの各パッケージを、BoM 5.0.0の一覧にある版へまとめて上げる。例: flutter pub add firebase_core:^5.0.0 firebase_auth:^7.0.0 firebase_app_check:^0.5.0(使っているパッケージをすべて並べる)。
手順4 ビルドで確かめる
flutter clean のあと、flutter analyze と、配布するすべての環境(Android・iPhoneなど)のビルドを通す。
リリースノートには、この記事で試した4項目のほかにも、使っているパッケージによって影響がある変更が載っています。
- firebase_ml_model_downloader は新しい版の公開が終わり、モデルの配信サービスは2027年6月15日に終了します。Cloud Storageとfirebase_storageへの移行が案内されています。
- firebase_ai では、非推奨だったAPIが削除され、candidateCountなど一部の設定が新たに非推奨になりました。
- iPhone向けのFirebase SDKは、Swift Package Managerでは13.0.0、CocoaPodsでは12.19.0が使われます。CocoaPodsでの新しい版の配布終了と移行手順は、Firebase Apple SDK 13の記事で紹介しています。
App CheckやData Connectを使っていないアプリでも、firebase_authを使っていて、Kotlin Gradleプラグインが2.3未満なら、Androidのビルド設定を直す必要があります。パッケージを上げる前に、android/settings.gradle.kts のKotlin Gradleプラグインの版と、android/app/build.gradle.kts の kotlinOptions の有無を確かめておくと、移行の途中でビルドが止まりません。










