【问题标题】:How to Remove Duplicate Libraries added via gradle?如何删除通过 gradle 添加的重复库?
【发布时间】:2014-12-31 10:01:16
【问题描述】:

我在我的项目中使用了两个库。一个是this,另一个是this

每当我使用编辑测试库运行应用程序时,它都会显示 UNEXPECTED TOP-LEVEL EXCEPTION

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

【问题讨论】:

    标签: android android-gradle-plugin android-library


    【解决方案1】:

    而不是将其添加到配置中。我只为这样的库添加了排除:

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

    【讨论】:

      【解决方案2】:

      转到文件>项目结构>在模块内部选择你的>点击右侧的依赖项,看看是否存在重复的库?

      也可以尝试无效/重启缓存

      【讨论】:

        【解决方案3】:

        如果由于库重复而发生错误,您可以在 build.gradle 文件中使用 PackagingOptions。

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

        【讨论】:

          猜你喜欢
          • 2015-04-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-18
          • 1970-01-01
          • 2011-01-23
          • 1970-01-01
          相关资源
          最近更新 更多