はじめに
FlutterでFirebaseを使用しているときに、次のようなエラーが発生することがあります:
Execution failed for task ':app:processDebugMainManifest'.
Manifest merger failed : uses-sdk:minSdkVersion 21 cannot be smaller than version 23 declared in library [:firebase_auth] ...
このエラーメッセージは、Firebase Authenticationを含む依存ライブラリが**minSdkVersion 23
を要求しているのに対し、プロジェクトがminSdkVersion 21
**に設定されているために発生しています。これにより、ビルドが失敗し、アプリを実行できない状態となります。
本記事では、このエラーの原因を詳しく解説し、解決策をステップごとに説明します。
エラーメッセージの解読
Manifest merger failed : uses-sdk:minSdkVersion 21 cannot be smaller than version 23 declared in library [:firebase_auth] ...
このエラーメッセージが示しているのは次の通りです:
firebase_auth
ライブラリがminSdkVersion 23
を要求している。- Firebase Authenticationライブラリが使用するAPIが、Android SDK 23以降でのみ利用できるためです。
- アプリが
minSdkVersion 21
に設定されているため、Firebase Authenticationと互換性がなく、ビルドが失敗している。
このエラーを解決するためには、プロジェクトのminSdkVersion
を23に引き上げるか、他の方法でこの互換性の問題を解消する必要があります。
解決方法
このエラーにはいくつかの解決策がありますが、最も推奨される方法は、minSdkVersion
を23に引き上げることです。その他、必要に応じてライブラリの互換性を調整する方法もあります。
方法1: minSdkVersionを23に引き上げる
最も簡単で推奨される方法は、プロジェクトのminSdkVersion
を23に引き上げることです。これにより、Firebase Authenticationを含むすべてのライブラリが正常に動作します。
手順
android/app/build.gradle
ファイルを開きます。- **
minSdkVersion
**の値を確認し、23に変更します。
android {
defaultConfig {
// 他の設定
minSdkVersion 23 // ここを21から23に変更
targetSdkVersion 33 // ここは通常、最新のAndroidバージョンに合わせます
// 他の設定
}
}
- ファイルを保存し、アプリを再ビルドします。
flutter clean
flutter pub get
flutter run
これで、ビルドが正常に完了するはずです。
方法2: Firebaseライブラリの古いバージョンを使用する
もし、Android SDK 21以下の端末をサポートしなければならない場合、firebase_auth
などのFirebaseライブラリの古いバージョンを使用することができます。ただし、機能が制限される可能性があり、最新のセキュリティ修正も適用されない可能性があります。
手順
pubspec.yaml
ファイルを開き、firebase_auth
のバージョンを互換性のある古いバージョンに変更します。
dependencies:
firebase_auth: 0.18.0 # 互換性のある古いバージョンを指定
flutter pub get
コマンドで依存関係をインストールします。
flutter pub get
- アプリを再ビルドして、エラーが解消されるか確認します。
方法3: tools:overrideLibraryで強制ビルド(非推奨)
エラーメッセージで示唆されているように、tools:overrideLibrary
を使用して互換性を無視し、強制的にビルドする方法もあります。しかし、この方法はランタイムエラーを引き起こす可能性が高いため、推奨されません。
手順
android/app/src/main/AndroidManifest.xml
ファイルを開きます。- 次のように、
tools:overrideLibrary
を追加します。
<uses-sdk
android:minSdkVersion="21"
tools:overrideLibrary="io.flutter.plugins.firebase.auth" />
- アプリを再ビルドします。
flutter clean
flutter pub get
flutter run
強制的にビルドできる場合もありますが、ランタイムエラーや互換性問題が発生する可能性があるため、本番環境には適さない方法です。
まとめ
FlutterでFirebase Authenticationを使用する際のminSdkVersion
エラーは、プロジェクト設定を少し変更するだけで簡単に解決できます。最も推奨される解決方法は、アプリのminSdkVersion
を23に引き上げることです。これにより、firebase_auth
をはじめとするすべての依存ライブラリが正常に動作し、エラーなくアプリをビルドできるようになります。
もし、SDK 21以下の端末をどうしてもサポートしたい場合は、ライブラリの古いバージョンを使用するか、互換性を強制的に無視する方法もありますが、リスクが伴うため注意が必要です。