Studio Android. Je reçois ce genre d'erreur pendant 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 réparer 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'
}
Je pense que la comparaison de chaînes est sensible à la casse. essayez avec exclude 'META-INF/notice.txt'
Je pense que vous devez inclure uniquement ces options dans build.gradle:
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
}
Voir la sortie de dégradé détaillée en utilisant gradle assemble
, notez les fichiers en double et excluez-les en utilisant:
Android {
packagingOptions {
exclude 'META-INF/notice.txt'
}
}
Exécutez la tâche assemble
gradle à partir de la ligne de commande pour obtenir une sortie détaillée:
./gradlew assemble || gradle assemble
Cela montre automatiquement ce qu'il faut exclure:
studioWorkspace/CCDroid git:(master) ✗ ± ./gradlew assembleDebug
:app:preBuild
:app:compileDebugNdk UP-TO-DATE
:app:preDebugBuild
:app:checkDebugManifest
:app:preReleaseBuild
:app:prepareComAndroidSupportAppcompatV72200Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42200Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:compileDebugJava UP-TO-DATE
:app:preDexDebug UP-TO-DATE
:app:dexDebug UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:validateDebugSigning
:app:packageDebug
Error: duplicate files during packaging of APK /Users/shubham/code/studioProjects/CCDroid/app/build/outputs/apk/app-debug-unaligned.apk
Path in archive: LICENSE
Origin 1: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.14.8/8ac073941721e0b521ec8e8bad088b1e7b8cd332/lombok-1.14.8.jar
Origin 2: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-all/1.8.4/5c97d8b6e715ed941aeb93d6fc401ab3eb18a566/mockito-all-1.8.4.jar
You can ignore those files in your build.gradle:
Android {
packagingOptions {
exclude 'LICENSE'
}
}
:app:packageDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:packageDebug'.
> Duplicate files copied in APK LICENSE
File 1: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.14.8/8ac073941721e0b521ec8e8bad088b1e7b8cd332/lombok-1.14.8.jar
File 2: /Users/shubham/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.14.8/8ac073941721e0b521ec8e8bad088b1e7b8cd332/lombok-1.14.8.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: 11.863 secs
Voir cette partie en sortie:
Android {
packagingOptions {
exclude 'LICENSE'
}
}
Il affiche même la liste des dépendances à l'origine des fichiers en double (LICENSE). Voir les lignes avec Origin # dans la sortie.
Ajoutez ceci dans votre fichier build.gradle ...
packagingOptions {
exclude 'META-INF/NOTICE' // will not include NOTICE file
exclude 'META-INF/LICENSE' // will not include LICENSE file
exclude 'META-INF/DEPENDENCIES' // will not include LICENSE file
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
comme ça...
Android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "your package name"
minSdkVersion 14
targetSdkVersion 25
versionCode 30
versionName "3.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/NOTICE' // will not include NOTICE file
exclude 'META-INF/LICENSE' // will not include LICENSE file
exclude 'META-INF/DEPENDENCIES' // will not include LICENSE file
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
C'est plus d'une erreur, vous avez raison.
Sous apply plugin: 'Android-library'
ajoutez ceci :: Android { packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } }
La première erreur provient des fichiers en double, la deuxième des fichiers LICENSE et NOTICE. Cela fonctionnera après
EDIT :: Voir mon post ici sur l'identification des problèmes :: Android Gradle plugin 0.7.0: "fichiers en double lors de l'emballage de APK"
ça marche pour moi
Android {
...
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'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
}
}
Fait intéressant, quand je supprimé cette ligne de gradle, cela fonctionnait:
compile 'org.Apache.commons:commons-lang3:3.3.1'
J'ai dû jouer un peu pour trouver le bon emplacement pour les options packaging. Résoudre le 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 la récente Android Studio 1.4.1 avec buildTools 23, vous devez placer les options Android.packaging au même niveau que compileOptions AND NOT dans aucun modèle {Android { accolades!
model {
Android {
compileSdkVersion = 21
buildToolsVersion = "23.0.1"
defaultConfig.with {
applicationId = "com.Android.sensorgraph"
minSdkVersion.apiLevel = 21
targetSdkVersion.apiLevel = 22
}
}
Android.packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
compileOptions.with {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
}