it-swarm.com.de

Android Gradle Plugin 0.7.0: "Dateien beim Packen von APK duplizieren"

Verwenden des Android Gradle-Plugins 0.7.0 mit dem folgenden build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.Android.tools.build:gradle:0.7.0'
    }
}

apply plugin: 'Android'

repositories {
    maven { url "https://Android-rome-feed-reader.googlecode.com/svn/maven2/releases" }
    maven { url "http://dl.bintray.com/populov/maven" }
    mavenCentral()
}

Android {
    compileSdkVersion 19
    buildToolsVersion '18.1.1'

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
    }
    buildTypes {
        release {
            runProguard true
            proguardFile getDefaultProguardFile('proguard-Android-optimize.txt')
        }
    }
    productFlavors {
        defaultFlavor {
            proguardFile 'proguard-rules.txt'
        }
    }
    sourceSets {
        instrumentTest.setRoot('src/instrumentTest')
    }
}

configurations {
    apt
}

ext.androidAnnotationsVersion = '2.7.1';

dependencies {
    compile 'com.Android.support:support-v4:18.0.0'

    compile 'com.viewpagerindicator:library:[email protected]'

    compile 'com.google.code.Android-rome-feed-reader:Android-rome-feed-reader:1.0.0-r2'
    compile 'org.jdom:jdom:1.1.1-Android-fork'

    apt "com.googlecode.androidannotations:androidannotations:${androidAnnotationsVersion}"
    compile "com.googlecode.androidannotations:androidannotations-api:${androidAnnotationsVersion}"

    compile 'com.google.code.gson:gson:2.2.4'
    compile 'com.j256.ormlite:ormlite-Android:4.47'
    compile 'com.j256.ormlite:ormlite-core:4.47'
    compile 'org.springframework.Android:spring-Android-core:1.0.1.RELEASE'
    compile 'org.springframework.Android:spring-Android-rest-template:1.0.1.RELEASE'
    compile 'com.prolificinteractive:actionbarsherlock:[email protected]'

    compile 'com.google.code.geocoder-Java:geocoder-Java:0.15'

    compile files('libs/CWAC-Pager.jar')
}

Android.applicationVariants.all { variant ->
    aptOutput = file("${project.buildDir}/source/apt_generated/${variant.dirName}")
    println "****************************"
    println "variant: ${variant.name}"
    println "manifest:  ${variant.processResources.manifestFile}"
    println "aptOutput:  ${aptOutput}"
    println "****************************"

    variant.javaCompile.doFirst {
        println "*** compile doFirst ${variant.name}"
        aptOutput.mkdirs()
        variant.javaCompile.options.compilerArgs += [
                '-processorpath', configurations.apt.getAsPath(),
                '-AandroidManifestFile=' + variant.processResources.manifestFile,
                '-s', aptOutput
        ]
    }
}

gibt den Fehler Duplicate files copied in APK META-INF/LICENSE.txt:

WARNING: Dependency commons-logging:commons-logging:1.0.4 is ignored for defaultFlavorDebug as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
WARNING: Dependency commons-logging:commons-logging:1.0.4 is ignored for defaultFlavorRelease as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on the replacement for dynamic properties.
Deprecated dynamic property: "aptOutput" on "com.And[email protected]5705013c", value: "/Users/david/Developer...".
****************************
variant: defaultFlavorDebug
manifest:  /Users/david/Developer/.../build/manifests/defaultFlavor/debug/AndroidManifest.xml
aptOutput:  /Users/david/Developer/.../build/source/apt_generated/defaultFlavor/debug
****************************
Deprecated dynamic property "aptOutput" created in multiple locations.
****************************
variant: defaultFlavorRelease
manifest:  /Users/david/Developer/.../build/manifests/defaultFlavor/release/AndroidManifest.xml
aptOutput:  /Users/david/Developer/.../build/source/apt_generated/defaultFlavor/release
****************************
:TravelGuard:compileDefaultFlavorDebugNdk UP-TO-DATE
:TravelGuard:preBuild UP-TO-DATE
:TravelGuard:preDefaultFlavorDebugBuild UP-TO-DATE
:TravelGuard:preDefaultFlavorReleaseBuild UP-TO-DATE
:TravelGuard:prepareComProlificinteractiveActionbarsherlock431Library UP-TO-DATE
:TravelGuard:prepareComViewpagerindicatorLibrary241Library UP-TO-DATE
:TravelGuard:prepareDefaultFlavorDebugDependencies
:TravelGuard:compileDefaultFlavorDebugAidl UP-TO-DATE
:TravelGuard:compileDefaultFlavorDebugRenderscript UP-TO-DATE
:TravelGuard:generateDefaultFlavorDebugBuildConfig UP-TO-DATE
:TravelGuard:mergeDefaultFlavorDebugAssets UP-TO-DATE
:TravelGuard:mergeDefaultFlavorDebugResources UP-TO-DATE
:TravelGuard:processDefaultFlavorDebugManifest UP-TO-DATE
:TravelGuard:processDefaultFlavorDebugResources UP-TO-DATE
:TravelGuard:generateDefaultFlavorDebugSources UP-TO-DATE
:TravelGuard:compileDefaultFlavorDebugJava
*** compile doFirst defaultFlavorDebug
/Users/david/Developer/.../src/main/Java/com/travelguard/service/TravelGuardService.Java:53: cannot find symbol
symbol  : class TravelGuardPrefs_
location: class com.travelguard.service.TravelGuardService
    TravelGuardPrefs_ travelGuardPrefs;
    ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/CategoriesActivity.Java:14: cannot find symbol
symbol  : class AssistanceFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.AssistanceFragment_;
                                   ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/CategoriesActivity.Java:16: cannot find symbol
symbol  : class CategoryFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.CategoryFragment_;
                                   ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/CategoriesActivity.Java:17: cannot find symbol
symbol  : class ContactFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.ContactFragment_;
                                   ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/CountriesActivity.Java:25: cannot find symbol
symbol  : class TravelGuardPrefs_
location: package com.travelguard.service
import com.travelguard.service.TravelGuardPrefs_;
                              ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/CountriesActivity.Java:44: cannot find symbol
symbol  : class TravelGuardPrefs_
location: class com.travelguard.ui.CountriesActivity
    TravelGuardPrefs_ travelGuardPrefs;
    ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/InstructionsActivity.Java:18: cannot find symbol
symbol  : class AssistanceFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.AssistanceFragment_;
                                   ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/InstructionsActivity.Java:19: cannot find symbol
symbol  : class ContactFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.ContactFragment_;
                                   ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/InstructionsActivity.Java:21: cannot find symbol
symbol  : class InstructionsFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.InstructionsFragment_;
                                   ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/MainActivity.Java:36: cannot find symbol
symbol  : class TravelGuardPrefs_
location: package com.travelguard.service
import com.travelguard.service.TravelGuardPrefs_;
                              ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/MainActivity.Java:40: cannot find symbol
symbol  : class AssistanceFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.AssistanceFragment_;
                                   ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/MainActivity.Java:41: cannot find symbol
symbol  : class ContactFragment_
location: package com.travelguard.ui.fragments
import com.travelguard.ui.fragments.ContactFragment_;
                                   ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/MainActivity.Java:55: cannot find symbol
symbol  : class TravelGuardPrefs_
location: class com.travelguard.ui.MainActivity
    TravelGuardPrefs_ travelGuardPrefs;
    ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/TermsActivity.Java:17: cannot find symbol
symbol  : class TravelGuardPrefs_
location: package com.travelguard.service
import com.travelguard.service.TravelGuardPrefs_;
                              ^
/Users/david/Developer/.../src/main/Java/com/travelguard/ui/TermsActivity.Java:23: cannot find symbol
symbol  : class TravelGuardPrefs_
location: class com.travelguard.ui.TermsActivity
    TravelGuardPrefs_ travelGuardPrefs;
    ^
Note: Starting AndroidAnnotations annotation processing
Note: AndroidManifest.xml file found: /Users/david/Developer/.../build/manifests/defaultFlavor/debug/AndroidManifest.xml
Note: Number of files generated by AndroidAnnotations: 22
Note: Generating source file: com.travelguard.service.SmartTravellerService_
Note: Generating source file: com.travelguard.service.SmartTravellerWebservice_
Note: Generating source file: com.travelguard.service.TravelGuardPrefs_
Note: Generating source file: com.travelguard.service.TravelGuardService_
Note: Generating source file: com.travelguard.service.TravelGuardWebservice_
Note: Generating source file: com.travelguard.ui.AdviceActivity_
Note: Generating source file: com.travelguard.ui.CategoriesActivity_
Note: Generating source file: com.travelguard.ui.ContactDetailActivity_
Note: Generating source file: com.travelguard.ui.ContactListActivity_
Note: Generating source file: com.travelguard.ui.ContactTravelGuardActivity_
Note: Generating source file: com.travelguard.ui.CountriesActivity_
Note: Generating source file: com.travelguard.ui.InformationActivity_
Note: Generating source file: com.travelguard.ui.InstructionsActivity_
Note: Generating source file: com.travelguard.ui.MainActivity_
Note: Generating source file: com.travelguard.ui.TermsActivity_
Note: Generating source file: com.travelguard.ui.TravelGuardActivity_
Note: Generating source file: com.travelguard.ui.fragments.AdviceDetailFragment_
Note: Generating source file: com.travelguard.ui.fragments.AdviceFragment_
Note: Generating source file: com.travelguard.ui.fragments.AssistanceFragment_
Note: Generating source file: com.travelguard.ui.fragments.CategoryFragment_
Note: Generating source file: com.travelguard.ui.fragments.ContactFragment_
Note: Generating source file: com.travelguard.ui.fragments.InstructionsFragment_
Note: Time measurements: [Whole Processing = 913 ms], [Generate Sources = 358 ms], [Extract Manifest = 163 ms], [Process Annotations = 158 ms], [Extract Annotations = 120 ms], [Validate Annotations = 82 ms], [Find R Classes = 28 ms],
Note: Time measurements: [Whole Processing = 0 ms],
Note: Time measurements: [Whole Processing = 0 ms],
warning: The following options were not recognized by any processor: '[androidManifestFile]'
Note: /Users/david/Developer/.../src/main/Java/com/travelguard/ui/ContactDetailActivity.Java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /Users/david/Developer/.../src/main/Java/com/travelguard/service/SmartTravellerService.Java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:TravelGuard:preDexDefaultFlavorDebug UP-TO-DATE
:TravelGuard:dexDefaultFlavorDebug
:TravelGuard:processDefaultFlavorDebugJavaRes UP-TO-DATE
:TravelGuard:validateDebugSigning
:TravelGuard:packageDefaultFlavorDebug
Error: duplicate files during packaging of APK /Users/david/Developer/.../build/apk/TravelGuard-defaultFlavor-debug-unaligned.apk
    Path in archive: META-INF/LICENSE.txt
    Origin 1: /Users/david/.gradle/caches/modules-2/files-2.1/commons-httpclient/commons-httpclient/3.1/964cd74171f427720480efdec40a7c7f6e58426a/commons-httpclient-3.1.jar
    Origin 2: /Users/david/.gradle/caches/modules-2/files-2.1/commons-codec/commons-codec/1.2/397f4731a9f9b6eb1907e224911c77ea3aa27a8b/commons-codec-1.2.jar
:TravelGuard:packageDefaultFlavorDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':TravelGuard:packageDefaultFlavorDebug'.
> Duplicate files copied in APK META-INF/LICENSE.txt
    File 1: /Users/david/.gradle/caches/modules-2/files-2.1/commons-httpclient/commons-httpclient/3.1/964cd74171f427720480efdec40a7c7f6e58426a/commons-httpclient-3.1.jar
    File 2: /Users/david/.gradle/caches/modules-2/files-2.1/commons-httpclient/commons-httpclient/3.1/964cd74171f427720480efdec40a7c7f6e58426a/commons-httpclient-3.1.jar


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 21.957 secs

Heute Morgen lief alles gut, bevor ich Android Studio aktualisiert habe. Irgendwelche Ideen?

BEARBEITEN: Ich konnte es vorübergehend beheben, indem ich Befehle wie lief

Zip -d spring-Android-core-1.0.1.RELEASE.jar META-INF/notice.txt

bis alle doppelten Fehler verschwunden sind.

316
David Lawson

Ab Android Studio Version 0.8.14

Sie sollten hinzufügen:

 Android {
     packagingOptions { 
         exclude 'META-INF/LICENSE.txt'
         exclude 'META-INF/NOTICE.txt'
         exclude '...'
     }
 }  

in Ihre build.gradle-Datei.

Geschichte:

Laut Kommentar 14 in diesem Fehler: https://issuetracker.google.com/issues/36982149#comment14 Dies ist ein Fehler in Version 0.7.0 des Android Gradle-Plugins, der bald in 0.7 behoben werden soll .1.

Hier sind die Anmerkungen aus diesem Fehler bezüglich der Addition für 0.7.1:

0.7.1 ist mit dem Fix dafür aus.

Die DSL zum Ausschließen von Dateien lautet:

Android {
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
    }
}

Sie können beliebig viele Ausschlussanweisungen hinzufügen. Der Wert ist der Archivpfad. Noch keine Wildcard- oder Glob-Unterstützung.

Dateinamen "LICENSE.txt" und "NOTICE.txt" unterscheiden zwischen Groß- und Kleinschreibung. Bitte probieren Sie es auch mit "license.txt" und "notice.txt" aus.

472
Scott Barta

In meinem Fall musste ich einige zusätzliche Ausschlüsse hinzufügen. Es scheint, dass es nicht an regulären Ausdrücken gefällt, die dies zu einem schönen Einzeiler gemacht hätten.

Android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/LGPL2.1'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/notice.txt'
    }
}
149
vincentjames501
packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
}
46
user3121011

Schauen Sie sich den Kommentar von Sakiboy an !


Antwort veraltet

Ab Gradle 0.9.1 wird Folgendes unterstützt:

Android.packagingOptions {
    pickFirst 'META-INF/LICENSE.txt'
}

Weitere Informationen finden Sie in den Gradle-Versionshinweisen .

31
JJD

Dasselbe Problem, wenn ich die Bibliothek httpclient-4.3.5 in Android Studio 0.8.6 .__ exportiere. Ich muss Folgendes enthalten:

packagingOptions{
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
}

Die Bibliothek Zip Inhalt der nächsten Jar:

commons-codec-1.6.jar
commons-logging-1.1.3.jar
fluent-hc-4.3.5.jar
httpclient-4.3.5.jar
httpclient-cache-4.3.5.jar
httpcore-4.3.2.jar
httpmime-4.3.5.jar
12
ferdiado

Dieser Fehler existiert noch in 0.8 +/1.10 

Mit Jackson

compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.2.2'

Ich musste ebenso den obigen Vorschlag einschließen, bevor er kompiliert wurde 

exclude 'META-INF/services/com.fasterxml.jackson.core.JsonFactory'
8
Ryan Heitner

Es ist mehr als ein Fehler

Unter apply plugin: 'Android-library'

füge das hinzu ::

Android {
    packagingOptions {
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
}

Bei doppelten Dateien ist es einfach, in die Variable JAR im Verzeichnis META-INF zu schauen und zu sehen, was den Fehler verursacht. Es könnte mehrere sein. In meinem Fall Couchbase Lite Plugin . Wenn Sie weitere Plugins hinzufügen, benötigen Sie weitere Ausnahmen

6
Pian0_M4n

Dasselbe Problem, wenn ich 'org.springframework.Android:spring-Android-rest-template:2.0.0.M1' in Android Studio 1.0.1 verwendete. Ich muss dies in build.gradle aufnehmen

Android{
...
    packagingOptions{
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
    }
...
}
4
saneryee

Das funktioniert für mich:

Android {
   packagingOptions {
       exclude 'LICENSE.txt'
   }
}
3
Sestertius

Ich denke, Sie müssen nur diese Optionen in build.gradle einfügen:

packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
    }

p.s gleiche Antwort aus meinem Beitrag in: Error :: Duplikat von Dateien während des Packens von APK

3
Gent Berani

Wichtig zu wissen, in welcher Datei es zu diesem Fehler kommt (in Ihrem Beispiel ist es META-INF/LICENSE.txt), in meinem Fall war es in META-INF/LICENSE [ohne ".txt"] und dann in der Datei META-INF/ASL2.0, also habe ich meinem build.gradle folgende Zeilen hinzugefügt:

Android {
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/ASL2.0'
    }
}

Sehr wichtig (!) -> Fügen Sie den Namen der Datei in demselben Stil hinzu, den Sie in der Fehlermeldung sehen: Der Text unterscheidet zwischen Groß- und Kleinschreibung, und es besteht ein Unterschied zwischen * .txt und * (ohne "txt"). . 

Gleich hier mit

dependencies {
    compile 'org.Apache.oltu.oauth2:org.Apache.oltu.oauth2.client:1.0.0'
}

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
}

Ich habe 2 Tage für diesen komischen Fehler verloren ... Warum passiert das immer noch in Gradle 1.0.0? Das ist für Neulinge sehr beunruhigend .. Trotzdem danke für die Info, dass ich dachte, es wäre auf meinem Code :)

2

Ich habe diesen Commit-Kommentar in AOSP bemerkt. Die Lösung besteht darin, einige Dateien mit DSL auszuschließen. Wahrscheinlich, wenn 0.7.1 veröffentlicht wird. 

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'
      }
    }
2
Maxime

Das Problem ist, dass der META-INF-Ordner nicht gefiltert wird. Mehrere Einträge von NOTICE oder LICENSE verursachen beim Erstellen Duplikate und es wird versucht, sie zusammen zu kopieren.

Dirty Quick Fix:

Öffnen Sie die .jar-Datei in Ihrem .gradle/caches/...-Ordner (mit einem Zip-kompatiblen Tool) und entfernen oder benennen Sie die Dateien im META-INF-Ordner um, die den Fehler verursachen (normalerweise NOTICE oder LICENSE) .(Ich weiß, aber für mich war es nicht wirklich klar, bis ich das google forum gelesen habe)

BEARBEITEN:

Dies wurde in 0.7.1 behoben. Fügen Sie einfach die Confilcting-Dateien hinzu, die ausgeschlossen werden sollen.

Android {
    packagingOptions {
        exclude 'META-INF/LICENSE'
    }
}
2
patrickf

Wenn Sie Ihren Teil unter Verwendung von Open Source-Bibliotheken als Entwickler leisten möchten, sollten Sie versuchen, all diese Open Source-Lizenzen in Ihre apk aufzunehmen. Dazu können Sie die merge -Methode in Ihrer packagingOptions verwenden.

Beispiel:

packagingOptions {
        // This will get include every license and notice regardless of what dir it’s in.
        merge '**/LICENSE.txt'
        merge '**/NOTICE.txt'
        merge '**/notice.txt'
        merge '**/license.txt'
        merge '**/NOTICE'
        merge '**/LICENSE'
        merge '**/notice'
        merge '**/license'
        merge '**/LGPL2.1'
        // This will exclude any README files, regardless of the dir or the file type.
        exclude '**/README.*'
}

Diese Antwort ist besser als die Verwendung von pickFirst, da diese Methode only die erste Lizenz auswählt, die sie findet, und den Rest ignoriert, was in diesem Fall irgendwie nutzlos wird.

Kurz gesagt, verwenden Sie die merge-Methode, um alle Lizenzen aus den verwendeten Kickass-Open-Source-Bibliotheken einzuschließen.

Weitere Informationen zu GradlePackagingOptions .

2
Sakiboy

In meinem Fall muss ich nur die build.gradle-Datei des Projekts hinzufügen:

Android {
  packagingOptions {
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
  }

   ...
}
1
K. Stopa
  packagingOptions {
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/dependencies.txt'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/LGPL2.1'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/notice.txt'
}
0
alias26

Entfernen von .txt, nachdem LICENSE meinen Fehler entfernt hat:

packagingOptions {
    exclude 'META-INF/LICENSE'
}
0
JSONParser

In Android Studio 1.1.0 brauchte ich Kleinbuchstaben:

packagingOptions{
      exclude 'META-INF/license.txt'
      exclude 'META-INF/notice.txt'
}
0
kandroidj

Die Dateien "LICENSE.txt" und "NOTICE.txt" unterscheiden zwischen Groß- und Kleinschreibung. Also für SPring Android-Bibliothek musste ich hinzufügen 

Android {
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/notice.txt'
    }
}
0
Igor Vuković