はじめに
FlutterとFirebaseの相性がいいのでFlutter製アプリにFirebaseを導入する人は多いと思います。Firestoreというデータストアを使いたいという人も多いでしょう。僕もその1人です。
この記事ではFlutterにFirebaseを導入した際に発生したエラーの解消方法をまとめます。(注意: Androidアプリ用の解消方法のまとめです
)
環境
- MacOS BigSur 11.4
- Flutter 2.5.2
- Dart 2.14.3
- cloud_firestore 2.5.3
前提
Flutter
やったこと
- FlutterアプリにFirebase Firestoreのライブラリ
cloud_firestore
を導入
$ flutter pub add cloud_firestore
- Android実機で挙動確認するためにVS Codeの
Run and Debug
でアプリ起動(flutter runと同義)
エラー内容
発生したエラーは下記です。
D8: Cannot fit requested classes in a single dex file
D8: Cannot fit requested classes in a single dex file (# methods: 96175 > 65536)
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html
at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:132)
at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:119)
at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:102)
...
...
...
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:mergeDexDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html
エラー解消方法
android/app/build.gradle
を編集します。
...
...
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
...
...
multiDexEnabled true // ここを追加
}
...
...
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:multidex:1.0.3' // ここを追加
}
以上です。とても簡単ですね。