2013-07-29 1 views
7

Я пытаюсь построить тест для Android с помощью следующей Gradle сборки файлаAndroid Gradle сборки: дубликаты файлов во время упаковки APK LICENSE.TXT

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4.2' 
    } 

apply plugin: 'android-library' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    instrumentTestCompile "junit:junit:4.+"   
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    instrumentTest.setRoot('tests') 
    instrumentTest { 
     java.srcDirs = ['tests/src'] 
     res.srcDirs = ['tests/res'] 
     assets.srcDirs = ['tests/assets'] 
     resources.srcDirs = ['tests/src'] 
     }   
    } 
} 

При запуске я получаю следующее сообщение об ошибке:

Error: duplicate files during packaging of APK ... Path in archive: LICENSE.txt Origin 1: ....gradle/caches/artifacts-24/filestore/junit/junit/4.11/jar/4e031bb61df09069aeb2bffb4019e7a5034a4ee0/junit-4.11.jar Origin 2: ....gradle/caches/artifacts-24/filestore/org.hamcrest/hamcrest-core/1.3/jar/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar :packageTest FAILED

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':packageTest'. Duplicate files at the same path inside the APK: LICENSE.txt

ответ

12

Junit v4.5 упаковал все необходимые зависимости в банку JUnit. Следовательно, нет необходимости в файле hamcrest.jar и отсутствии двойного файла LICENSE.txt.

просто изменить зависимости для:

instrumentTestCompile "junit:junit:4.5+"

Основная проблема по-прежнему остается - андроид не принимает два имени файлов то же самое в своем дереве сборки. Это хорошее обходное решение.

+0

+1 В простаивающих ситуациях использование «junit: junit: 4. +» будет разрешено для чего-либо большего, чем 4.0, которое включает в себя 4.5+. Но у студия/gradle есть эта проблема, когда она не обновляет зависимости или не ищет более новые зависимости в разы. Обходной путь будет игнорировать кеш и перезагрузить зависимости. – Varun

4

Я заметил этот комментарий фиксации в AOSP, решение будет состоять в том, чтобы исключить некоторые файлы с помощью DSL. Возможно, когда выйдет 0.7.1.

commit e7669b24c1f23ba457fdee614ef7161b33feee69 
Author: Xavier Ducrohet <---> 
Date: Thu Dec 19 10:21:04 2013 -0800 

    Add DSL to exclude some files from packaging. 

    This only applies to files coming from jar dependencies. 
    The DSL is: 

    android { 
     packagingOptions { 
     exclude 'META-INF/LICENSE.txt' 
     } 
    } 
+1

Я добавил исключение для license.txt. Это не помогает студии. Когда я строю/запускает тесты с терминала, он отлично работает, но когда я пытаюсь запустить его из студии android, он жалуется на дубликаты файлов –

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

  • Нет связанных вопросов^_^