Градл ругается на файл и не может собрать проект

Рейтинг: 0Ответов: 1Опубликовано: 24.04.2015

Вобщем подключил библиотеку compile 'com.specyci:residemenu:1.6+' в проект. При запуске выдает ошибку

Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    C:\Users\zen_75\AppData\Local\Android\sdk\build-tools\22.0.0\dx.bat --dex --no-optimize --output C:\projects\android-customer\app\build\intermediates\dex\debug --input-list=C:\projects\android-customer\app\build\intermediates\tmp\dex\debug\inputList.txt
Error Code:
    2
Output:
    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:502)
        at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:277)
        at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
        at com.android.dx.command.dexer.Main.run(Main.java:246)
        at com.android.dx.command.dexer.Main.main(Main.java:215)
        at com.android.dx.command.Main.main(Main.java:1

06)

Попробовал сделать эксклуд но наверное не правильно

 packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/inputList'
    }

не могу понять что делать. на демке эта либа работает. Но там подключена как модуль а не как градл. может кто сталкивался? Ах да проект синхронизируется, ошибка при старте, когда нажимаю ран.

Ответы

▲ 2Принят

Данное исключение возникает из-за ограничений формата DEX

You can reference a very large number of methods in a DEX file, but you can only invoke the first 65536, because that’s all the room you have in the method invocation instruction

Для решения данной проблемы необходимо убрать ненужные библиотеки (например для google-play-services использовать только необходимые модули из таблицы 1). Так же можно избавиться от разбиения на большое количество методов.

Если у вас есть классы моделей, то стоит избавиться в них от геттеров/сеттеров и сделать public поля (только если в методах нет дополнительной логики)