3

我是一名新的 Android 开发人员,构建文件总是让我害怕。:D 我在项目中使用了一些第三方库

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:21.0.+'
    compile 'com.android.support:support-v4:21.0.3'
    compile 'com.android.support:cardview-v7:21.0.+'
    compile 'com.android.support:recyclerview-v7:21.0.+'
    compile 'de.hdodenhof:circleimageview:1.2.1'
    compile 'com.github.flavienlaurent.datetimepicker:library:0.0.2'
}

除此之外,我还使用 MPAndroidChart(lib 文件夹中唯一的 jar),它只能作为 jar 文件使用,而不是 gradle 依赖项。

MPAndroidChart 使用 NineOldAndroids 作为依赖项,我怀疑我的其他库之一也使用它,它导致构建失败。

知道如何使这两个库都能正常运行吗?

我检查了类似的问题,发现一个正是我的问题 - Gradle 错误 - 任务':app:dexDebug'的执行失败

但他自己包含了 NineOldAndroids 库。所以他只是删除了那条线并且它正在工作。

我的一个想法是剥离 jar 并将它们作为 java 文件包含在我的项目中,但这对于这个问题来说似乎有点过头了。我确定必须有更简单的方法?

这是我的全部错误

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/nineoldandroids/animation/ValueAnimator$AnimatorUpdateListener;
    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)


 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    C:\Users\manu.joseph\AppData\Local\Android\sdk\build-tools\21.1.2\dx.bat --dex --no-optimize --output C:\Users\manu.joseph\AndroidStudioProjects\WriteTrack\app\build\intermediates\dex\debug --input-list=C:\Users\manu.joseph\AndroidStudioProjects\WriteTrack\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/ValueAnimator$AnimatorUpdateListener;
        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)
4

4 回答 4

1

将此添加到您的 build.gradle :

 configurations {
    all*.exclude group: 'com.nineoldandroids'
}

对我来说很好;)

于 2015-02-22T15:15:43.537 回答
0

删除以下行并重试

compile 'com.android.support:support-v4:21.0.3'
于 2015-02-12T03:49:36.960 回答
0

我是一名新的 android 开发人员,在我发布这个答案之前不久,我也面临着同样的问题。谷歌搜索,只出现了 2 个 stackoverflow 问题。您的问题以及您在此处提供的 stackoverflow 问题。

不知何故,在我通过项目结构(ctrl+alt+shift+s)删除未使用的依赖库之后,在我的情况下,它是

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

同步 gradle 然后噗!我希望它也适合你。

于 2015-02-12T11:52:59.887 回答
0

最后,我最终将库添加为外部项目,这对我有用。

详细说明在这里.. 如何将库项目添加到 Android Studio?

希望这可以帮助某人..

于 2015-02-12T13:48:16.970 回答