web-dev-qa-db-fra.com

Android Studio 0.4 Fichiers en double copiés dans APK META-INF / LICENSE.txt

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

113
a.black13

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.

154
biniam

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

46
R.S

il suffit d'ajouter

Android {
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
    }
}

dans build.gradle

23
shankey

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'
    }
}
16
AlfredZhong

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')
}
11
Dhiral Pandya

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)

8
Shreekant N

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

8
Jan Wilmans

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'
}
6
Suresh Sarak
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

4
Gajendra kumar

Je viens d'ajouter 2:

Android{

packagingOptions{
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/LICENSE'
 }

}
3
josedlujan

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")
2
Olcay Ertaş

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.

2
Android Amature

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 "**"
    }
}
1
Mapsy