Flutterで「Manifest merger failed: uses-sdk21 cannot be smaller than version 23」エラーの解決方法

Flutter

はじめに

 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と互換性がなく、ビルドが失敗している。

このエラーを解決するためには、プロジェクトのminSdkVersion23に引き上げるか、他の方法でこの互換性の問題を解消する必要があります。

解決方法

 このエラーにはいくつかの解決策がありますが、最も推奨される方法は、minSdkVersionを23に引き上げることです。その他、必要に応じてライブラリの互換性を調整する方法もあります。

方法1: minSdkVersionを23に引き上げる

 最も簡単で推奨される方法は、プロジェクトのminSdkVersion23に引き上げることです。これにより、Firebase Authenticationを含むすべてのライブラリが正常に動作します。

手順

  1. android/app/build.gradle ファイルを開きます。
  2. **minSdkVersion**の値を確認し、23に変更します。
android {
    defaultConfig {
        // 他の設定
        minSdkVersion 23  // ここを21から23に変更
        targetSdkVersion 33  // ここは通常、最新のAndroidバージョンに合わせます
        // 他の設定
    }
}
  1. ファイルを保存し、アプリを再ビルドします。
flutter clean
flutter pub get
flutter run

 これで、ビルドが正常に完了するはずです。

方法2: Firebaseライブラリの古いバージョンを使用する

 もし、Android SDK 21以下の端末をサポートしなければならない場合、firebase_authなどのFirebaseライブラリの古いバージョンを使用することができます。ただし、機能が制限される可能性があり、最新のセキュリティ修正も適用されない可能性があります。

手順

  1. pubspec.yamlファイルを開き、firebase_authのバージョンを互換性のある古いバージョンに変更します。
dependencies:
  firebase_auth: 0.18.0  # 互換性のある古いバージョンを指定
  1. flutter pub getコマンドで依存関係をインストールします。
flutter pub get
  1. アプリを再ビルドして、エラーが解消されるか確認します。

方法3: tools:overrideLibraryで強制ビルド(非推奨)

 エラーメッセージで示唆されているように、tools:overrideLibraryを使用して互換性を無視し、強制的にビルドする方法もあります。しかし、この方法はランタイムエラーを引き起こす可能性が高いため、推奨されません。

手順

  1. android/app/src/main/AndroidManifest.xmlファイルを開きます。
  2. 次のように、tools:overrideLibraryを追加します。
<uses-sdk
    android:minSdkVersion="21"
    tools:overrideLibrary="io.flutter.plugins.firebase.auth" />
  1. アプリを再ビルドします。
flutter clean
flutter pub get
flutter run

 強制的にビルドできる場合もありますが、ランタイムエラーや互換性問題が発生する可能性があるため、本番環境には適さない方法です。

まとめ

 FlutterでFirebase Authenticationを使用する際のminSdkVersionエラーは、プロジェクト設定を少し変更するだけで簡単に解決できます。最も推奨される解決方法は、アプリのminSdkVersion23に引き上げることです。これにより、firebase_authをはじめとするすべての依存ライブラリが正常に動作し、エラーなくアプリをビルドできるようになります。

 もし、SDK 21以下の端末をどうしてもサポートしたい場合は、ライブラリの古いバージョンを使用するか、互換性を強制的に無視する方法もありますが、リスクが伴うため注意が必要です。

コメント