Android Studio. Ten rodzaj błędu pojawia się podczas uruchamiania aplikacji.
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'
}
Jak mogę naprawić ten błąd?
EDYTOWANE
Te wykluczające opcje rozwiązały mój problem:
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
źródło
źródło
Odpowiedzi:
Myślę, że porównanie ciągów uwzględnia wielkość liter. Spróbuj z
exclude 'META-INF/notice.txt'
źródło
notice.txt
zamiastNOTICE.txt
? Chociaż błąd wygląda w rzeczywistości inaczej niż ten, w którym występuje wykluczenie. Czy maszMETA-INF/notice.txt
plik w swoimsrc/main/resources/
?exclude 'META-INF/notice.txt'
ale potem konsola o to poprosiłaDuplicate files copied in APK META-INF/NOTICE.txt
. Dziwne, prawda? Nie maresources
katalogu podC:\PathToAndroidStudioProject\src\main
.exclude 'META-INF/notice.txt'
iexclude 'META-INF/NOTICE.TXT'
, czy to działa?packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' }
Myślę, że musisz uwzględnić tylko te opcje w pliku build.gradle :
źródło
Krótka odpowiedź:
Zobacz szczegółowe dane wyjściowe gradle za pomocą
gradle assemble
i zanotuj pliki, które są zduplikowane i wyklucz je za pomocą:Długa odpowiedź:
Uruchom
assemble
zadanie gradle z wiersza poleceń, aby uzyskać szczegółowe wyniki:./gradlew assemble || gradle assemble
To automatycznie pokazuje, co wykluczyć:
Zobacz tę część w wyniku:
Pokazuje nawet listę zależności, które zapoczątkowały zduplikowane pliki (LICENCJA). Zobacz wiersze z Origin # w wynikach.
źródło
Dodaj to do swojego pliku build.gradle ...
lubię to...
źródło
To więcej niż jeden błąd, masz rację.
Pod
apply plugin: 'android-library'
Dodaj ::
android { packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } }
Pierwszy błąd dotyczy duplikatów plików, drugi dotyczy plików LICENCJI i POWIADOMIEŃ. Będzie działać później
EDYCJA :: Zobacz mój post na temat identyfikowania problemów :: Wtyczka Android Gradle 0.7.0: „zduplikowane pliki podczas pakowania pakietu APK”
źródło
to działa dla mnie
źródło
Co ciekawe, kiedy usunięte ten wiersz z Gradle, to działało:
źródło
Musiałem trochę się pobawić, aby znaleźć odpowiednie miejsce na opakowanie Opcje. Rozwiązanie problemu z duplikatem pliku w przypadku konfliktu między jackson-core: 2.2.2 i jackson-databind: 2.2.2 Wydaje się, że ostatnio zmienił się również DSL. W ostatnim Android Studio 1.4.1 z buildTools 23 musisz umieścić Androida. opcje pakowania na tym samym poziomie, co compileOptions ORAZ NIE wewnątrz żadnego modelu {android { nawiasy klamrowe!
źródło