Круговая диаграмма MPAndroidChart

В моем проекте используется библиотека 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)

build.gradle библиотеки MaterialDesign:

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

Если я удаляю зависимость, я получаю другие ошибки. Что я могу сделать?


person user3608814    schedule 13.01.2015    source источник
comment
Это означает, что у вас есть две библиотеки с одной и той же зависимостью (Animator.class), и вы импортируете их обе. Проверьте файлы JAR и зависимости Gradle, которые вы добавляете в свой проект, чтобы убедиться, что файл, определяющий Animator, включен только один раз.   -  person Mike Laren    schedule 13.01.2015


Ответы (1)


Похоже, вы объявляете зависимость com.nineoldandroids:library:2.4.+ как в MPChartLib, так и в своем проекте. Вот что вызывает проблему.

Попробуйте удалить зависимость из вашего проекта, но оставьте ее в 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. Его следует объявлять только один раз, иначе вы получите аналогичные ошибки.

person Mike Laren    schedule 13.01.2015
comment
Это должен быть правильный ответ. MPAndroidChart использует библиотеку nineoldandroids, а также некоторые другие библиотеки в вашем проекте. - person Philipp Jahoda; 13.01.2015
comment
Как я уже говорил в первом посте, библиотека 'com.nineoldandroids: library: 2.4. +' также используется в Material Design. Если я удалю зависимость в своем проекте, ничего не изменится, потому что Material Design и MPChartLib используют 'com.nineoldandroids: library: 2.4. +'. У вас есть другие предложения? - person user3608814; 13.01.2015
comment
Что касается MPAndroidChart, вы можете клонировать репозиторий вместо использования файла .jar и удалить девять андроидов из зависимостей библиотек. Затем добавьте в свой проект библиотеку MPAndroidChart. - person Philipp Jahoda; 13.01.2015