flutter プロジェクトに cloud_firestore を追加するとエラー発生

64K問題

flutter で用意したプロジェクトより Firestore の Cloud Database を利用するため、 pubspec.yaml に cloud_firestore を追加します。その後、アプリを実行しようとすると次のようなエラーが発生することがあります。

D8: Cannot fit requested classes in a single dex file (# methods: 82189 > 65536)
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
The number of method references in a .dex file cannot exceed 64K.

これは64K問題と呼ばれているもので、単一のDEXより参照できるメソッドが 65536 個に制限されているものです。上記のエラー例であれば、 82189 個のメソッドが存在するためエラーとなっています。

解決方法

解決方法は簡単で、 android/app/build.gradle に65536を超えて参照できる設定を記述するだけです。
具体的には「multiDexEnabled true」を下記の位置に追記します。

android/app/build.gradle

android {
    :
    defaultConfig {
        :
        multiDexEnabled true
    }
    :
}

これで64K問題は解消できるでしょう。

まとめ

Firebase の Cloud Database は便利ですのでよく利用しますが、毎度設定を忘れてこのエラーに出会います。最初はビックリしましたが、今はもう慣れっこです。。。落ち着いて設定を変更してください。

TKS2では、 flutter や Firebase Cloud Database などを利用したプロジェクトに対応することができます。もしお困りのときはぜひお声がけください。