こんなエラーがおきました
FlutterでFirebaseを使用する際にはFirebase Pluginを使用するのが一般的です。
Pluginはpubspec.yamlのdependenciesにPluginの名前、バージョンを追記します。
pubspec.yaml
dependencies:
flutter:
sdk: flutter
firebase_core: ^0.4.0+6
これでAndroid Studioでビルドすれば無事導入完了・・・と思ったら、下記のようなエラーがでました。
ビルドエラー
D8: Cannot fit requested classes in a single dex file (# methods: 72501 > 65536)
FAILURE: Build failed with an exception.
原因
「a single dex file」
つまり、Androidの1つのAndroidのバイナリファイル内に含めることができるメソッドの数は65536までという上限があり、その上限を超過したためにビルドが失敗していました。
対処方法
Androidには1アプリケーションのdexファイルを複数に分割するMultidexという機能があります。こちらを有効にすることで上記エラーを回避できます。
対応はbuild.gradleに下記2件の設定を追加するだけです。
build.gradle
android {
defaultConfig {
multiDexEnabled true // 1.ここを追加
}
buildTypes {
release {
multiDexKeepFile file('multidex-config.txt') // 2.ここを追加
}
}
}
さいごに
Firebase Plugin1つだけの導入でこのエラーにぶつかるとは思っても見ませんでした・・・。
参考
https://github.com/flutter/flutter/issues/27682
https://github.com/flutter/flutter/issues/21009
https://developer.android.com/studio/build/multidex?hl=ja