[Flutter]Error while merging dex archives: The number of method references in a .dex file cannot exceed 64K.の対処法

このページには広告が含まれる場合があります。

 

FlutterのプロジェクトをAndroidの実機あるいはエミュレーターで動かした時に、こんな感じで、

 

D8: Cannot fit requested classes in a single dex file (# methods: 85467 > 65536)
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html

というわけのわからないエラーが出てしまったときの対処法です。

(注)Flutter2.10以降は、エラーメッセージがわかりやすくなっています。

[!] App requires Multidex support

┌─ Flutter Fix ──────────────────────────────────────────────────────────────────────────────────┐
│ Flutter multidex handling is disabled. If you wish to let the tool configure multidex, use the │
│ --mutidex flag.                                                                                │
└────────────────────────────────────────────────────────────────────────────────────────────────┘

Androidでは使っているライブラリも含めて65536メソッド以上使ってはいけない

実は、Androidでは65536個以上のメソッドを参照してはいけないという縛りがあります。

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

と言われても、自分でメソッドを65536個以上も作った覚えなんかないですよね。

実は、この「65536」という数は、自分で作ったメソッドだけじゃなくて、使っている外部のライブラリに含まれているメソッドも対象に入っています。

ですので、ライブラリをたくさん使っている場合は、このエラーに遭遇する可能性が高くなるということなのです。

じゃあ、一体どうしたらええねん!?ということですよね。

 

minSdkVersionを21(Androidのバージョン5.0)に引き上げれば解決

この解消方法は2通りあって、

1)「minSdkVersion(アプリがインストールできる最低レベルのAndroidのOSのバージョン)」を21(Androidのバージョン5.0)以上に引き上げる

あるいは

2)minSdkVersion を 20 以下に設定している場合は、multidex サポート ライブラリを使用してアプリのプロジェクトに以下のように変更を加える

の2通りがありますが、今の御時世ではAndroid5.0以上の端末が世界の9割以上を占めているので、個人的には1)でいいと考えています。

(詳しくは、下の動画で解説していますので、よろしければご覧ください)

こんな記事も読まれています

イチオシ

40代から感じるモヤモヤを解消できる 無料動画セミナー

あすコロ式・40代からの人生アップデート【新】戦略

アラフォーでキャリアを失ったバリバリ左脳人間・スピリチュアル耐性ゼロの元金融マンが、人生どん底から立ち上がる過程でたどり着いた「人生再構築メソッド」。40代・50代を過ぎて多くの人が感じる「このままでいいんかな?」「この先どうしたらいいかわからない」というモヤモヤを解消し、人生後半戦をアップデートさせる【新】戦略。

今すぐ無料で動画セミナー(80分)を見る ▶

TOP