背景
-
Flutter で FireStore の Cloud Database を利用したモバイルアプリを開発中に当事象に遭遇。
-
Firestore を利用するために、cloud_firestore プラグインを
pubspec.yaml
でインストール後、ビルドするとエラーが表示され、先に進めなくなってしまいました。
D8: Cannot fit requested classes in a single dex file (# methods: 83479 > 65536)
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
The number of method references in a .dex file cannot exceed 64K.
原因
どうやら 64K 問題と呼ばれるものらしく、Android 界隈では有名な問題らしいですね。。。
Android アプリに関しては、ビルドシステムの都合で参照できるメソッド数が 65536 個を超えるとビルドができなくなる制約のことを指すようです。
DEX ファイルというものは Android で実行可能なメソッド群ファイルで、本エラーログではその DEX ファイルには 83479 個( > 65536 個)のメソッドがあるといわれていました。
解決方法
解決方法は簡単で、Android アプリで 65536 個を超えるメソッド数でも DEX ファイルを参照できるように設定を変更すれば良いそうです。
具体的には、multiDexEnabled true
を以下に追加すれば OK です。
android/app/build.gradle
android {
:
defaultConfig {
applicationId "com.example.xxxxxxxx"
:
multiDexEnabled true // これを追加
}
:
}