Android Studio. J'obtiens ce genre d'erreur lors de l'exécution de l'application.
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'
}
Comment puis-je corriger cette erreur?
ÉDITÉ
Ces options d'exclusion ont résolu mon problème:
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
la source
la source
Réponses:
Je pense que la comparaison des chaînes est sensible à la casse. essayer avec
exclude 'META-INF/notice.txt'
la source
notice.txt
au lieu deNOTICE.txt
? Bien que l'erreur semble en fait différente de celle où se produit l'exclusion. Avez-vous unMETA-INF/notice.txt
fichier dans votresrc/main/resources/
?exclude 'META-INF/notice.txt'
mais la console m'a alors demandé celaDuplicate files copied in APK META-INF/NOTICE.txt
. Etrange, non? Il n'y a pas deresources
répertoire sousC:\PathToAndroidStudioProject\src\main
.exclude 'META-INF/notice.txt'
etexclude 'META-INF/NOTICE.TXT'
, ça marche?packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' }
Je pense que vous devez inclure uniquement ces options dans build.gradle :
la source
Réponse courte:
Voir la sortie détaillée de gradle en utilisant
gradle assemble
et noter les fichiers qui sont en double et les exclure en utilisant:Longue réponse:
Exécutez la
assemble
tâche gradle à partir de la ligne de commande pour une sortie détaillée:./gradlew assemble || gradle assemble
Cela montre automatiquement ce qu'il faut exclure:
Voir cette partie en sortie:
Il affiche même la liste des dépendances à l'origine des fichiers dupliqués (LICENCE). Voir les lignes avec Origin # dans la sortie.
la source
Ajoutez ceci dans votre fichier build.gradle ...
comme ça...
la source
C'est plus d'une erreur, vous avez raison.
Sous
apply plugin: 'android-library'
Ajoute ça ::
android { packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } }
La première erreur est due aux fichiers en double, la deuxième aux fichiers LICENCE et NOTICE. Cela fonctionnera après
EDIT :: Voir mon article ici sur l'identification des problèmes :: Plugin Android Gradle 0.7.0: "fichiers en double lors de l'empaquetage de l'APK"
la source
cela fonctionne pour moi
la source
Fait intéressant, lorsque j'ai supprimé cette ligne de gradle, cela a fonctionné:
la source
J'ai dû jouer un peu pour trouver le bon emplacement pour les options d'emballage. Résolution du problème de fichier en double pour un conflit entre jackson-core: 2.2.2 et jackson-databind: 2.2.2 De plus, le DSL semble avoir changé récemment.Ainsi, dans le récent Android Studio 1.4.1 avec buildTools 23, vous devez mettre android. des options de packaging au même niveau que compileOptions ET PAS à l'intérieur d'un modèle {android { accolades!
la source