Android Studio. Ich erhalte diese Art von Fehler während der Anwendungsausführung.
Error:Execution failed for task ':app:packageDebug'. Duplicate files copied in APK META-INF/notice.txt
build.gradle
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.1"
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/ASL2.0'
}
defaultConfig {
minSdkVersion 7
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:19.0.1'
compile 'com.j256.ormlite:ormlite-android:4.48'
compile 'org.codehaus.jackson:jackson-core-asl:1.9.13'
compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
compile 'com.octo.android.robospice:robospice:1.4.11'
compile 'com.octo.android.robospice:robospice-spring-android:1.4.11'
}
Wie kann ich diesen Fehler beheben?
BEARBEITET
Diese Ausschlussoptionen haben mein Problem gelöst:
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
}
android
android-gradle-plugin
Robertas Setkus
quelle
quelle
Antworten:
Ich denke, der String-Vergleich unterscheidet zwischen Groß- und Kleinschreibung. Versuche es mit
exclude 'META-INF/notice.txt'
quelle
notice.txt
anstatt mitNOTICE.txt
? Obwohl der Fehler tatsächlich anders aussieht als der, bei dem der Ausschluss erfolgt. Haben Sie eineMETA-INF/notice.txt
Datei in Ihrersrc/main/resources/
?exclude 'META-INF/notice.txt'
aber dann hat die Konsole dazu aufgefordertDuplicate files copied in APK META-INF/NOTICE.txt
. Seltsam, nicht wahr? Es gibt keinresources
Verzeichnis unterC:\PathToAndroidStudioProject\src\main
.exclude 'META-INF/notice.txt'
und setzenexclude 'META-INF/NOTICE.TXT'
, funktioniert es?packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' }
Ich denke, Sie müssen nur diese Optionen in build.gradle aufnehmen :
quelle
Kurze Antwort:
Sehen Sie sich die detaillierte Gradle-Ausgabe mit an
gradle assemble
und notieren Sie sich die doppelten Dateien. Schließen Sie sie aus mit:Lange Antwort:
Führen Sie die
assemble
Gradle-Task über die Befehlszeile aus, um eine detaillierte Ausgabe zu erhalten:./gradlew assemble || gradle assemble
Dies zeigt automatisch an, was ausgeschlossen werden soll:
Siehe diesen Teil in der Ausgabe:
Es wird sogar die Liste der Abhängigkeiten angezeigt, aus denen doppelte Dateien hervorgegangen sind (LIZENZ). Siehe die Zeilen mit Origin # in der Ausgabe.
quelle
Fügen Sie dies in Ihre build.gradle-Datei ein ...
so was...
quelle
Es ist mehr als ein Fehler, Sie haben Recht.
Unter
apply plugin: 'android-library'
füge das hinzu ::
android { packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } }
Der erste Fehler tritt bei Dateiduplikaten auf, der zweite bei LIZENZ- und NOTICE-Dateien. Es wird danach funktionieren
BEARBEITEN :: Siehe meinen Beitrag hier zum Identifizieren der Probleme :: Android Gradle Plugin 0.7.0: "Dateien beim Packen von APK duplizieren"
quelle
das funktioniert bei mir
quelle
Interessanterweise hat es funktioniert , als ich diese Zeile aus gradle gelöscht habe:
quelle
Ich musste ein bisschen herumspielen, um den richtigen Ort für die Verpackungsoptionen zu finden. Lösen des Problems mit doppelten Dateien für einen Konflikt zwischen jackson-core: 2.2.2 und jackson-database: 2.2.2 Auch das DSL scheint sich kürzlich geändert zu haben. In Android Studio 1.4.1 mit buildTools 23 müssen Sie also Android einsetzen. Verpackungsoptionen auf der gleichen Ebene wie compileOptions UND NICHT in einem Modell {android { Klammern!
quelle