LoginSignup
4
2

More than 3 years have passed since last update.

Androidで64Kを超えるメソッドを使用している場合について。

Posted at

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 以上に設定している場合:

gradleファイル
android {
    defaultConfig {
        multiDexEnabled true
    }
}

minSdkVersion を 20 以下に設定している場合:

minSdkVersion を 20 以下に設定している場合は、Multidex サポートライブラリを使用する必要があります。

gradleファイル
android {
    defaultConfig {
        multiDexEnabled true
    }
}

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

Cordovaプラグインで対応する

gradleファイルの設定を変更する場合は、Cordovaプラグインを利用することで対応することができます。
現在、下記のようなサードパーティー製Cordovaプラグインが提供されています。

プロジェクトに組み込まれているCordovaプラグインの設定によっては、対応できない場合もありますが、上のCordovaプラグインを使用することで、ほとんどのケースは対応できると思います。

おわりに

Androidビルドの際に、メソッド数の上限を越えたエラーが出力された場合は、今回紹介したサードパーティー製Cordovaプラグインを試してみてください。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2