Flutter: minSdkVersion 16 cannot be smaller than version 19 declared in library [:firebase_analytics] のエラー
結論:「build.gradle」バージョン数値参照部分をベタ書きで19に修正
2022/5/4 Flutter エラー・バグ日記
最新のFirebase関連のパッケージを導入してビルドしたところ、表題のエラーが発生。
エラー文の内容は以下のとおり。
/Users/・・・・/android/app/src/debug/AndroidManifest.xml Error: uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:firebase_analytics] /Users/・・・・/build/firebase_analytics/intermediates/library_manifest/debug/AndroidManifest.xml as the library might be using APIs not available in 16 Suggestion: use a compatible library with a minSdk of at most 16, or increase this project's minSdk version to at least 19, or use tools:overrideLibrary="io.flutter.plugins.firebase.analytics" to force usage (may lead to runtime failures)
FAILURE: Build failed with an exception.
・・・(略)・・・
┌─ Flutter Fix
The plugin firebase_analytics requires a higher Android SDK version.
Fix this issue by adding the following to the file
/Users/・・・・/android/app/build.gradle:
android {
defaultConfig {
minSdkVersion 19
}
}
Note that your app won't be available to users running Android SDKs below 19.
Alternatively, try to find a version of this plugin that supports these lower versions of the
Android SDK.
「app/build.gradle」の「minSdkVersion」が16だと古すぎるので、19に修正が必要とのこと。
親切に修正方法までエラーメッセージに表示してくれている。
ただ、Flutter2.8以降は、「app/build.gradle」の「SdkVersion」は、数値ベタ書きではなく、「flutter.minSdkVersion」のようにファイル参照方式に変更されており、修正方法に検討が必要だった。
こちらの情報を参考に、Finderから
/Users/ユーザー名/flutter/packages/flutter_tools/gradle/flutter.gradle
※Macの場合です
のファイルを見てみると、確かに以下のようにバージョン数値が記載されていた。
/** For apps only. Provides the flutter extension used in app/build.gradle. / class FlutterExtension { /* Sets the compileSdkVersion used by default in Flutter app projects. */
static int compileSdkVersion = 31
/** Sets the minSdkVersion used by default in Flutter app projects. */
static int minSdkVersion = 16
/** Sets the targetSdkVersion used by default in Flutter app projects. */
static int targetSdkVersion = 31
ただ、ファイル内のデータ量が多く、検索しないと見つけられなかった。。
また、これだけ深い位置にあるファイルを、今後もメンテしていくのはちょっと不便だな、、、と思ったので、以下のように、「app/build.gradle」のバージョン数値参照部分をコメントアウトし、数値をベタ書きで修正してみた。
defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "・・・・" // minSdkVersion flutter.minSdkVersion // このバージョン数値参照部分をコメントアウト minSdkVersion 19 // 修正後のバージョン数値を直接ベタ書き targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName }
これで問題なくエラーは解消された。
この方法であれば、後でどう修正したかもわかりやすく、追加修正も楽だと感じた。
ちなみに、ネット上を検索すると、こちらやこちらなど、同じエラーに対して、バージョンを21や23に修正している例が多かった。
こちらのAPIレベルの表を見ると、19というのはAndroid 4.4に相当するらしく、さすがに古すぎるので、確かにもっと上の数値にしたほうが良いのかもしれない(他のライブラリでは19より上を要求される可能性もあるため)。
リリースしたアプリ(全てFlutterで開発)
個人アプリ開発で役立ったもの
おすすめの学習教材
\超初心者向けでオススメな元Udemyの講座/
\キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/
\Gitの基礎について無料で学べる/
おすすめの学習書籍
\実用的。image_pickerに関してかなり助けられた/
\Dartの基礎文法を素早くインプットできる/