Flutter – com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:The number of method references in a .dex file cannot exceed 64K.

Flutterを実行したら以下のエラーメッセージが表示されましたので、見てきたいと思います。

com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: The number of method references in a .dex file cannot exceed 64K.

エラー内容

com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: The number of method references in a .dex file cannot exceed 64K.

Andoroidにてアプリおよびアプリの参照するライブラリが 65,536 メソッドを超えるとビルドエラーが発生し、Androidビルド・アーキテクチャの制限に達したことが示されるらしいです。

解決

「android/app/build.gradle」に以下のコードを追加しましょう。

defaultConfig {
        ...........
        multiDexEnabled true
    }


dependencies {
    ...........
    implementation 'com.android.support:multidex:1.0.3'
}

multiDexEnabled true

Androidアプリケーション(APK)ファイルには、アプリの実行に使用されるコンパイル済みコードを含むDalvik実行可能(DEX)ファイルの形式の実行可能バイトコードファイルが含まれます。 Dalvik Executable仕様では、Androidフレームワークメソッド、ライブラリメソッド、独自のコードのメソッドを含む、単一のDEXファイル内で参照できるメソッドの総数を65.536に制限しています。 multidex構成と呼ばれる複数のDEXファイルを生成するようにアプリのビルドプロセスを構成する必要があります。

multidex

Multidexはメソッド総数上限の制約を乗り越えるための仕組みです。

Dalvik Executable の仕様により、単一の DEX ファイル内で参照できるメソッドの総数が 65,536 に制限されます。 (中略) 65,536 は 64 X 1024 に等しいため、この制限は「64K 参照制限」と呼ばれます。

Multidexはbuildにかかる時間が長くなるなどのデメリットがあるらしいです。

詳しいことはこちら

参考

https://www.web-dev-qa-db-ja.com/ja/android/%E3%80%8Cmultidexenabled-true%E3%80%8D%E3%81%A8%E3%81%AF%E3%81%A9%E3%81%86%E3%81%84%E3%81%86%E6%84%8F%E5%91%B3%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F/824647976/

https://backport.net/blog/2017/08/20/multidex_vs_jumbomode/

https://github.com/flutter/flutter/issues/53047

https://developer.android.com/studio/build/multidex.html?hl=ja

コメントを残す