Gradle – Неожиданное исключение высшего уровня – Из ниоткуда

Достаточно определенная градация для меня. Начал проект, который работает отлично всего несколько дней назад. Обновленная студия Android и снова открыла проект. Я пробовал все, что мог придумать, от удаления / обновления библиотек, проверяющих xml-файлы и структуру. Удаление кэша градиента и установка последнего jdk, кажется, ничего не помогает.

Также попытался добавить:

configurations { all*.exclude group: 'com.android.support', module: 'support-v4' } 

См. Также в других сообщениях о stackoverflow

Я экспортировал ошибку с консоли, и она выглядит так:

 objc[2338]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined. UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536 at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:501) at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:276) at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:490) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:167) at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) at com.android.dx.command.dexer.Main.run(Main.java:230) at com.android.dx.command.dexer.Main.main(Main.java:199) at com.android.dx.command.Main.main(Main.java:103) :Derp:dexDerpDebug FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':Derp:dexDerpDebug'. > com.android.ide.common.internal.LoggedErrorException: Failed to run command: /Applications/Android Studio.app/sdk/build-tools/19.1.0/dx --dex --num-threads=4 --output /Users/MorePathStuffForALongWhile Error Code: 2 Output: objc[2338]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined. 

Ваша проблема: вы прошли ок. 65000 ограничение метода при компиляции приложения. Вы должны найти способ уменьшить количество методов в вашем приложении.

Если вы используете Службы Google Play, вы можете попробовать этот метод, чтобы скомпилировать его с большей детализацией.

Если нет, вы можете просто использовать multiDex (убедитесь, что используете последнюю версию Android Studio). Используйте это в файле build.gradle:

 android { defaultConfig { ... multiDexEnabled = true } } 

Если вы используете gson или jackson, попробуйте удалить его зависимости. Это сработало для меня. compile 'com.google.code.gson:gson:2.1

В исходном коде + все включенные библиотеки заканчиваются определениями более 65 тыс. Методов. В настоящее время это ограничение .

Чтобы избежать этой ситуации, была введена поддержка нескольких приложений . Время компиляции классов вывода разбивается и объединяется в несколько файлов dex. И во время выполнения они загружаются из нескольких файлов dex.

Для этого вам необходимо добавить поддержку multidex:

 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' } 

И установите класс приложения, расширяющий MultiDexApplication .