Building Apps with Over 65K Methods


AndroidStudioでアプリを開発している際に、メソッド数が65000を超えてしまった場合の対策例

まず、ビルド実行時に下記のエラーのいずれかまたは複数がでたとき可能性がある
java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536

Error:Execution failed for task ':your appname:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2


Error:Execution failed for task ':your appneme:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java'' finished with non-zero exit value 3
私が行った対策を下記に記す

AndroidManifest.xml に以下を追加

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

build.gradleを変更

(省略)
dependencies {
  …
        compile 'com.android.support:multidex:1.0.0'  //これを追加
  …
}


android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 16
        versionCode 1
        versionName "1.0"
        multiDexEnabled = true
    }

    dexOptions {
        incremental true
        javaMaxHeapSize "4g"
    }
    ...
}

(省略)
まとめ

Multidexを設定することで今回は対策できたが、バージョンなど制約があるので、
ProGuardを使って、解決するほうが良いみたいである。

参考:
Building Apps with Over 65K Methods

http://developer.android.com/tools/building/multidex.html