Android gradle build: duplicate files when packing APK LICENSE.txt

I am trying to create a test for Android using the following gradle build file

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'] } } } 

When I start, I get the following error:

Error: duplicate files during APK packaging ... Path in the 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: assembly failure with exception.

  • What went wrong: Execution completed for task ': packageTest'. Duplicate files on one path inside APK: LICENSE.txt
+7
android gradle android-build
source share
2 answers

Junit v4.5 packed all the necessary dependencies in a JUnit jar. Therefore, there is no need for hamcrest.jar and the double file LICENSE.txt is not obtained.

just change the dependencies:

instrumentTestCompile "junit: junit: 4.5+"

The main problem still remains - the android does not accept the names of two files the same in its assembly tree. This is a good way to work around the problem.

+12
source share

I noticed this commit comment in AOSP, the solution would be to exclude some files using DSL. Maybe when 0.7.1 comes out.

 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' } } 
+4
source share

All Articles