Androidビルドでは、プロジェクトで使用されているメソッド数が 65536
を超えた場合、ビルドエラーになります。
Monacaで開発するプロジェクトでも、多数のCordovaプラグインを組み込んでいるような場合に、下記のようなエラーが表示される場合があります。
例1
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
例2
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
The number of method references in a .dex file cannot exceed 64K.
このエラーの対処方法については、64K を超えるメソッドを使用するアプリの設定 に記載されているような対策を行う必要があります。
通常は、Cordovaプラグイン側で対応されているのが望ましいのですが、Cordovaプラグイン側で対処されていない場合があります。
64K を超えるメソッドを使用するアプリの設定 にも記載されていますが、gradleファイルに下記の設定を行うことで対応することができます。
#minSdkVersion を 21 以上に設定している場合:
android {
defaultConfig {
multiDexEnabled true
}
}
#minSdkVersion を 20 以下に設定している場合:
minSdkVersion を 20 以下に設定している場合は、Multidex サポートライブラリを使用する必要があります。
android {
defaultConfig {
multiDexEnabled true
}
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
Cordovaプラグインで対応する
gradleファイルの設定を変更する場合は、Cordovaプラグインを利用することで対応することができます。
現在、下記のようなサードパーティー製Cordovaプラグインが提供されています。
プロジェクトに組み込まれているCordovaプラグインの設定によっては、対応できない場合もありますが、上のCordovaプラグインを使用することで、ほとんどのケースは対応できると思います。
おわりに
Androidビルドの際に、メソッド数の上限を越えたエラーが出力された場合は、今回紹介したサードパーティー製Cordovaプラグインを試してみてください。