2016-02-18 5 views
0

Я получаю следующее исключение при создании моего Android приложения с Gradle:Дублировать запись во время Android Gradle построить в задаче: transformClassesWithJarMergingAndroidTest

Execution failed for task ':transformClassesWithJarMergingForGoogleGermanDebugAndroidTest'. 
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/hamcrest/BaseDesc 

Проблема, кажется, что в моем файле build.gradle Я предрек :

testCompile 'org.hamcrest:hamcrest-all:1.3' 
androidTestCompile 'org.hamcrest:hamcrest-all:1.3' 

Однако мне нужны обе зависимости для модульных испытаний и тестов интеграции. Как это решить?

ответ

1

Проблема заключалась в том, что еще одна баночка (Mockito) включены hamcrest-core как переходному зависимость. Этот модуль содержит все классы под именем пакета org.hamcrest.*. Отсюда конфликт. Решение было:

configurations { 
    all*.exclude group: 'org.hamcrest', module: 'hamcrest-core' 
} 

Как описано здесь: https://docs.gradle.org/current/userguide/dependency_management.html Глава 23.4.7

0

Попробуйте добавить параметр exclude для повторных записей.

androidTestCompile 'org.hamcrest:hamcrest-all:1.3' { 
    exclude module: 'BaseDesc' 
} 
+0

Это решило ошибку выше, но теперь конфликт происходит с классом BaseDescription. Таким образом, я должен был бы исключить каждый класс в пакете org.hamcrest отдельно. – Damnum

+0

Да, это правда. Вам нужно будет сделать это. Попробуйте с помощью 'org.hamcrest. *' Подстановочного символа. –

-3
buildTypes { 
     release { 
      multiDexEnabled true; 
     } 
} 

попробовать это это должно работать

+1

Пробовал, но без успеха – Damnum

+1

Почему люди, кажется, думают, что multidex решает каждую проблему Android когда-либо! – RaGe

Смежные вопросы