多个依赖项试图导入“意外的顶级异常:”

时间:2015-02-09 23:27:35

标签: android android-studio

我的proyect上有两个库。

https://github.com/rengwuxian/MaterialEditText

https://github.com/navasmdc/MaterialDesignLibrary

它编译,但是当我运行程序时它报告错误。

UNEXPECTED TOP-LEVEL EXCEPTION:
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    C:\Users\Alvaro\AppData\Local\Android\sdk\build-tools\21.1.2\dx.bat --dex --no-optimize --output D:\ALVARO\AndroidStudioProjects\Proyecto\app\build\intermediates\dex\debug --input-list=D:\Alva\AndroidStudioProjects\Proyecto\app\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)

我知道问题,但我无法解决

问题

  

多个依赖项正在尝试导入nineoldandroids正好“nineoldandroids”

app build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.example.alva.proyecto"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt')
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:21.0.3'

    //seconds library
    compile project(':materialDesign')

    //first library
    compile project(':EditText') 
}

第一个库build.gradle

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 21
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile 'com.android.support:support-annotations:21.0.3'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.android.support:appcompat-v7:21.0.3'
}

秒库build.gradle

apply plugin: 'com.android.library'

android {
    compileSdkVersion 8
    buildToolsVersion "19.1.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 8
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:18.+'
    compile files('libs/nineoldandroids-2.4.0.jar')
}

我试过了:

1。点击“app”build.gradle:

compile project(':EditText') {

        exclude group: 'com.nineoldandroids', module: 'library:2.4.0'
    }

不工作,报告错误

Error:(31, 0) Gradle DSL method not found: 'exclude()'
Possible causes:<ul><li>The project 'Proyecto' may be using a version of Gradle that does not contain the method.
<a href="openGradleSettings">Gradle settings</a></li><li>The build file may be missing a Gradle plugin.
<a href="apply.gradle.plugin">Apply Gradle plugin</a></li>

2. 从秒库中移除“nineoldandroids”,不工作

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

  

我不知道如何使用各自的工件进行导入

它位于每个库的文档中。

The MaterialEditText "Download" section引用:

compile 'com.rengwuxian.materialedittext:library:1.8.2'

The "How to Use" section of MaterialDesignLibrary引用:

repositories {
    jcenter()
}

dependencies {
    compile 'com.github.navasmdc:MaterialDesign:1.+@aar'
}

然后,Gradle将(希望)能够检测到这两个依赖关系本身都依赖nineoldandroids并解决冲突。我说“希望”,因为“秒库build.gradle”来自哪个库使用nineoldandroids的本地副本,这不是一个好主意。然而,GitHub repo似乎没有那个特定的build.gradle文件,所以你可能没问题。