【Flutter】"D8: Cannot fit requested classes in a single dex file"が表示された時の対象方法

Flutterでビルド中に”D8: Cannot fit requested classes in a single dex file”と表示された時の対象方法を説明します。

方法

/android/app/build.gradleに、次のようにmultiDexEnabled trueimplementation 'com.android.support:multidex:1.0.3'を追加します。

...
android {
...
defaultConfig {
...
multiDexEnabled true
}
...
}
...
dependencies {
implementation 'com.android.support:multidex:1.0.3' // use latest version
...
}
...

これで完了です。再びビルドすれば通ります。

なぜエラーが起こったのか?

これは64K制限と呼ばれるAndroidの仕様で、アプリやライブラリのメソッドが65,536メソッドを超えると起こります。

このエラーを回避するには以下の二つの方法があります。

  1. メソッドの数を減らす
  2. プロジェクトにmultidexサポートライブラリを追加する

上記の方法では2の方法を使いました。メソッドの数を減らして対処できるのであれば、その方が良いかもしれません。

参考

https://developer.android.com/studio/build/multidex

シェア