【问题标题】:MPAndroidChart PieChartMPAndroidChart 饼图
【发布时间】:2015-01-13 00:11:15
【问题描述】:

在我的项目中,使用库MaterialDesign。当我还添加库 MPchart 时,我收到此错误并且不明白出了什么问题。谢谢你

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)

MaterialDesign 库的build.gradle:

dependencies {
  compile 'com.nineoldandroids:library:2.4.+'
  compile 'com.android.support:support-v4:21.0.3'
}

以及项目的build.gradle:

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  compile 'com.android.support:support-v4:21.0.3'
  compile 'com.android.support:appcompat-v7:21.0.3'
  compile 'com.android.support:recyclerview-v7:21.0.0'
  compile 'com.nineoldandroids:library:2.4.+'
  compile project(":MaterialDesign")
  compile project(":MPChartLib")
  compile files('libs/opencsv-2.4.jar')
}. 

如果我删除依赖,我会得到其他错误。 我能做什么?

【问题讨论】:

  • 这意味着您有两个共享相同依赖项的库 (Animator.class) 并且您正在导入它们。检查您要添加到项目中的 JAR 文件和 gradle 依赖项,以确保定义 Animator 的文件仅包含一次。

标签: java android mpandroidchart


【解决方案1】:

您似乎在MPChartLib 和您的项目中都声明了一个依赖项com.nineoldandroids:library:2.4.+。这就是造成问题的原因。

尝试从您的项目中删除依赖项,但将其保留在 MPChartLib 中,以便 dextool 只能看到一次。您的新 build.gradle 将如下所示:

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  compile 'com.android.support:appcompat-v7:21.0.3'
  compile 'com.android.support:recyclerview-v7:21.0.0'
  compile project(":MaterialDesign")
  compile project(":MPChartLib")
  compile files('libs/opencsv-2.4.jar')

}

也对 Android 支持库执行相同的操作。它应该只声明一次,否则你会得到类似的错误。

【讨论】:

  • 这应该是正确的答案。 MPAndroidChart 使用 Nineoldandroids 库以及您项目中的一些其他库。
  • 就像我在第一篇文章中所说的那样,库'com.nineoldandroids: library: 2.4. +'也在Material Design中使用。如果我删除项目中的依赖项不会改变任何东西,因为 Material Design 和 MPChartLib 使用 'com.nineoldandroids: library: 2.4. +'。您还有其他建议吗?
  • 关于 MPAndroidChart,您可以做的是克隆存储库而不是使用 .jar 文件,并从库依赖项中删除 Nineoldandroids。然后将 MPAndroidChart 库添加到您的项目中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多