Après avoir mis à jour mon Studio de 0.3.7 à 0.4.0, je ne peux plus compiler mon projet. J'ai trouvé une solution sur stackoverflow: Copie de fichiers en double (Android Studio 0.4.0)
J'ai mis à jour mon projet pour attribuer 0,7 +, mais je ne sais pas où je dois mettre les prochaines chaînes:
Android {
packagingOptions {
exclude 'META-INF/LICENSE.txt'
}
}
Mon logcat: log
Execution failed for task ':Prog:packageDebug'.
> Duplicate files copied in APK META-INF/LICENSE.txt
File 1: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar
File 2: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar
P.S. Développer dans Ubuntu 13.04
Mettre les dépendances en haut et le paquetOptions à la fin a fonctionné pour moi.
apply plugin: 'Android'.
Voici mon build.gradle complet dans le dossier de l'application.
dependencies {
compile 'com.Android.support:support-v4:+'
compile files('libs/Apache-mime4j-0.6.jar')
compile files('libs/httpmime-4.0.jar')
}
Android {
compileSdkVersion 19
buildToolsVersion "19.0.1"
defaultConfig {
minSdkVersion 7
targetSdkVersion 10
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard- rules.txt'
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
}
}
EDIT: Presque toutes les licences OS incluent l’obligation "d’inclure une copie de la licence" dans votre projet. Cela signifie donc que vous devez inclure une copie de toutes les licences de système d'exploitation que vous utilisez dans vos projets. En les "excluant" graduellement, vous violez les licences.
Les exclure du projet pourrait ne pas être la meilleure option. Merci R.S. pour l'info.
Attention!! Violation possible de la licence OpenSource.
En excluant les fichiers license.txt comme proposé ci-dessus, vous risquez de violer certaines licences OpenSource car il est courant que les licences OpenSource acceptent de les ajouter à votre source. Mieux vérifier vos licences opensource.
Mise à jour: Jusqu'à ce qu'il y ait une meilleure solution, utilisez
packagingOptions {
pickFirst 'META-INF/license.txt'
}
comme cela, vous remplissez au moins une partie de l'obligation de licence
il suffit d'ajouter
Android {
packagingOptions {
exclude 'META-INF/LICENSE.txt'
}
}
dans build.gradle
Vous pouvez résoudre ce problème en ajoutant le code suivant à project/app/build.gradle
:
Android {
// Fixed build error : Duplicate files copied in APK META-INF/xxx
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE.txt'
}
}
Je faisais face au même problème que dans la nouvelle version de gradle, Below build.gradle le format de texte fonctionne pour moi:
Il y a deux pots Jackson dans mon dossier libs.
Android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.omtlab.myapplication"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'libs/jackson-core-asl-1.9.13.jar'
exclude 'libs/jackson-mapper-asl-1.9.13.jar'
exclude 'META-INF/ASL2.0'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
}
dependencies {
//compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.Android.support:appcompat-v7:21.0.3'
compile files('libs/jackson-core-asl-1.9.13.jar')
compile files('libs/jackson-mapper-asl-1.9.13.jar')
}
En insérant ce code
Android{
packagingOptions{
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
}
}
ASSUREZ-VOUS si dans erreur il est affiché
> Copier des fichiers copiés dans APK META-INF/LICENSE.txt
puis ajouter
Android{
packagingOptions{
exclude 'META-INF/LICENSE.txt'
}
}
si dans erreur il montre
> Copier des fichiers copiés dans APK META-INF/LICENSE
puis ajouter
Android{
packagingOptions{
exclude 'META-INF/LICENSE'
}
}
si dans erreur il montre
> Fichiers en double copiés dans APK META-INF/license.txt
puis ajouter
Android{
packagingOptions{
exclude 'META-INF/license.txt'
}
}
Dans un texte court, CASE et le document FORMAT (.txt) sont si importants.
(cette erreur existe également dans Android Studio 1.1.0)
Ajouter:
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
}
a fonctionné pour moi, la solution de biniam_Ethiopia est probablement la solution la plus sûre
Cela vous aidera à résoudre le problème
packagingOptions {
exclude 'META-INF/ASL2.0'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/DEPENDENCIES'
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
}
Ajouter le fichier build.gradle et le projet de synchronisation
Je viens d'ajouter 2:
Android{
packagingOptions{
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/LICENSE'
}
}
Lorsque vous utilisez Java-jwt
et jackson-core
ensemble, utilisez ce qui suit:
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml")
J'ai eu une erreur similaire et je l'ai résolue sans les fonctions packingOptions()
et exclude
. J'ajoutais deux dépendances mais l'une était un sous-groupe de la première. Cela a provoqué l'erreur, une fois que j'ai enlevé l'un d'eux, j'ai eu une version propre. Je recommande de rechercher une erreur similaire dans votre bloc de dépendance.
Cela peut très bien être une mauvaise pratique, mais si vous incluez plusieurs grandes bibliothèques, vous pourriez vous retrouver à résoudre des centaines de conflits de ce type.
Ci-dessous, une solution très simple pour de tels cas:
Android {
....
packagingOptions {
// Allow the compilation process to choose the dependencies for us.
pickFirst "**"
}
}