(Android)FlutterにFirebase FireStore導入するときのエラー解消方法

はじめに

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' // ここを追加
}

以上です。とても簡単ですね。

Related Posts