LoginSignup
28
25

More than 5 years have passed since last update.

ビルド時に Unable to execute dex: method ID not in [0, 0xffff]: 65536 が出た場合の対処

Last updated at Posted at 2015-12-09

Android Studio 1.5.1で確認しています。

Android Studio上で、ライブラリを追加したとたん、以下のタスクから進まなくなりました。
:app:transformClassesWithDexForDebug

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2

AndroidStudio上のエラーメッセージを見てもまったくわからないので

↑を参考にコマンドラインからビルドしてみました。

bash <ANDROID_STUDIO_HOME>/gradle/gradle-<version>/bin/gradle :app:assembleDebug

例:私の環境の場合

cd [プロジェクトのディレクトリ]
bash /Applications/Android\ Studio.app/Contents/gradle/gradle-2.8/bin/gradle :app:assembleDebug

と、以下のメッセージをゲットしました。

:app:transformClassesWithDexForDebug

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
    at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:484)
    at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:261)
    at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:473)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:161)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
    at com.android.dx.command.dexer.Main.run(Main.java:277)
    at com.android.dx.command.dexer.Main.main(Main.java:245)
    at com.android.dx.command.Main.main(Main.java:106)


:app:transformClassesWithDexForDebug FAILED

どうやらライブラリを追加した結果、メソッド数の上限を超えてしまった模様。
ていうかメソッド数に上限なんてあったのね。

公式サイトを見ながら対処
Building Apps with Over 65K Methods
http://developer.android.com/intl/ja/tools/building/multidex.html

build.gradleを修正

build.gradle
android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        ...
        minSdkVersion 14
        targetSdkVersion 21
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

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

Manifestのアプリケーションも修正

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

私の環境ではこれで解消しました。
参考になれば。

28
25
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
28
25