Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Gradle Duplicate files copied in APK META-INF/license.txt

I'm going to add RESTful Web Service support with Spring to my Android application as described here https://spring.io/guides/gs/consuming-rest-android/.

This is top-level build.gradle config:

// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript {     repositories {         jcenter()     }     dependencies {         classpath 'com.android.tools.build:gradle:2.1.0'     } }  allprojects {     repositories {         jcenter()     } } 

This is my app/build.gradle config:

apply plugin: 'com.android.application'  android {     compileSdkVersion 23     buildToolsVersion "23.0.3"      defaultConfig {         applicationId "com.example"         minSdkVersion 8         targetSdkVersion 17     }      buildTypes {         release {             minifyEnabled false             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'         }     }      dependencies {         compile 'com.android.support:appcompat-v7:+'         compile fileTree(dir: 'libs', include: ['*.jar'])         compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE'         compile 'com.fasterxml.jackson.core:jackson-databind:2.3.2'     }      packagingOptions {         exclude 'META-INF/NOTICE' // will not include NOTICE file         exclude 'META-INF/LICENSE' // will not include LICENSE file     }  } 

Right now it fails with a following error:

FAILURE: Build failed with an exception.  * What went wrong: Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/license.txt     File1: user\.gradle\caches\modules-2\files-2.1\org.springframework.android\spring-android-rest-template\1.0.1.RELEASE\e132d929bd181941f79b0d63edafb8a86ae6fd33\spring-android-rest-template-1.0.1.RELEASE.jar     File2: user\.gradle\caches\modules-2\files-2.1\org.springframework.android\spring-android-core\1.0.1.RELEASE\e68f0e8e4b636ee30c4de58953be38d9b72a5e3b\spring-android-core-1.0.1.RELEASE.jar 

What am I doing wrong and how to fix it ?

like image 533
brunoid Avatar asked Jun 02 '16 08:06

brunoid


2 Answers

Write below lines in your app level gradle file

android {     packagingOptions {         exclude 'META-INF/DEPENDENCIES.txt'         exclude 'META-INF/LICENSE.txt'         exclude 'META-INF/NOTICE.txt'         exclude 'META-INF/NOTICE'         exclude 'META-INF/LICENSE'         exclude 'META-INF/DEPENDENCIES'         exclude 'META-INF/notice.txt'         exclude 'META-INF/license.txt'         exclude 'META-INF/dependencies.txt'         exclude 'META-INF/LGPL2.1'     } } 
like image 99
Mahesh Babariya Avatar answered Nov 05 '22 09:11

Mahesh Babariya


If the solution in the selected answer does not fix your problem, try adding

    exclude 'META-INF/ASL2.0' 

as well. Or basically, identify the name of the duplicate file and exclude it. The addition above fixed the issue for me.

like image 21
chrlaura Avatar answered Nov 05 '22 11:11

chrlaura