ユーザ用ツール

サイト用ツール


dexindexoverflowexception_通称65k問題_の対応

以前のリビジョンの文書です


DexIndexOverflowExceptionについて

メソッド数が65k(65536)を超えると下記のビルドエラーが発生します。
ライブラリ等のメソッド数も含まれるため、大きめのライブラリをいくつか使用しているとわりと遭遇する。

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

MultiDexのSupportライブラリで対応する

サポートライブラリはビルドツールv21.1.0以上から利用出来ます。
・build.gradle

android {
  buildToolsVersion "21.1.+"
  
  defaultConfig {
    ...
    // Enabling multidex support.
    multiDexEnabled true
  }
}

dependencies {
  compile 'com.android.support:multidex:1.0.0'
}

Applicationクラスを実装している場合は、継承をMultiDexApplicationに変更し、attachBaseContextをOverrideする。
・MyApp.java

public class MyApp extends MultiDexApplication {
  @Override
  protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
  }
}

Applicationクラスを実装していない場合は、AndroidManifestの<application>にMultiDexApplicationを指定する。
・AndroidManifest.xml

<application
  ...
  android:name="android.support.multidex.MultiDexApplication">
  ...
</application>

参考URL

dexindexoverflowexception_通称65k問題_の対応.1448612176.txt.gz · 最終更新: 2015/11/27 17:16 by sou