Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как удалить дубликаты библиотек, добавленные через gradle?

Автор вопроса: AruLNadhaNОтветов: 3

Я использую две библиотеки в своем проекте. Один из них - это, а другой - это.

Всякий раз, когда я запускаю приложение с библиотекой Edit Test, оно показывает НЕОЖИДАННОЕ ИСКЛЮЧЕНИЕ ВЕРХНЕГО УРОВНЯ:

Error:Execution failed for task ':mobile:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    E:\Android\me\me\sdk\build-tools\21.1.2\dx.bat --dex --no-optimize --output C:\Project\RemoteiT\RemoteiT\mobile\build\intermediates\dex\debug --input-list=C:\Project\RemoteiT\RemoteiT\mobile\build\intermediates\tmp\dex\debug\inputList.txt
Error Code:
    2
Output:
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Lcom/nineoldandroids/animation/Animator$AnimatorListener;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
        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:106)

Я предполагаю, что приведенная выше ошибка показывает, что com.nineoldandroids добавлено дважды или конфликтует.

Поэтому я попытался удалить его в файле build.gradle. Но все равно показывает ошибку!

Верно ли мое предположение? Или где-то я ошибся?

Build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "me.aruhan.remt"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

configurations {
    // to avoid double inclusion of support libraries
    all*.exclude group: 'com.nineoldandroids', module: 'materialDesign'
}

dependencies {
    compile 'com.android.support:appcompat-v7:21.0.0'
    compile project(':materialDesign')
    compile 'com.rengwuxian.materialedittext:library:1.7.1'
}

androidandroid-gradle-pluginandroid-library

Ответы

Ответ 1 · рейтинг 5 · AruLNadhaN

Вместо добавления его в Configurations. Я добавил исключение только для библиотеки следующим образом:

compile ('com.rengwuxian.materialedittext:library:1.7.1') {
   exclude group: 'com.nineoldandroids', module: 'library'
}

Ответ 2 · PPD

Перейдите в "Файл"> "Структура проекта"> "Внутренний модуль", выберите свой> нажмите "Зависимости" с правой стороны и посмотрите, присутствуют ли дубликаты библиотек или нет?

Также попробуйте аннулировать/перезапустить кеш

Ответ 3 · Udaya Sri

Если ошибка возникает из-за дублирования библиотек, вы можете использовать packageOptions в файле build.gradle.

android {
  ....
  packagingOptions {
    exclude '.....'
    pickFirst '.....'
  }
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы