19
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Flutter で Cloud Database を利用時、ビルドエラー「D8: Cannot fit requested classes in a single dex file」が出て先に進めない

Posted at

背景

  • 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 // これを追加
    }
    :
}
19
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?