web-dev-qa-db-fra.com

Plusieurs fichiers ont été trouvés avec le chemin indépendant du système d'exploitation 'META-INF / LICENSE'

Lorsque j'ai créé mon application, j'ai eu une erreur de suivi.

Erreur: L'exécution a échoué pour la tâche ': app: transformResourcesWithMergeJavaResForDebug'. Plusieurs fichiers ont été trouvés avec le chemin indépendant du système d'exploitation 'META-INF/LICENSE'

Ceci est mon fichier build.gradle

apply plugin: 'com.Android.application'
apply plugin: 'kotlin-Android'
Android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "cn.sz.cyrus.kotlintest"
        minSdkVersion 14
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"

        javaCompileOptions{
            annotationProcessorOptions{
                includeCompileClasspath = true
            }
        }
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
 /*       exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'*/
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.Android.support', module: 'support-annotations'
    })
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
    compile 'com.Android.support:appcompat-v7:25.3.1'
    testCompile 'junit:junit:4.12'
    compile 'com.Android.support:design:25.3.1'
    compile 'com.Android.support.constraint:constraint-layout:1.0.2'
    debugCompile 'com.squareup.leakcanary:leakcanary-Android:1.5.1'
    releaseCompile 'com.squareup.leakcanary:leakcanary-Android-no-op:1.5.1'
    testCompile 'com.squareup.leakcanary:leakcanary-Android-no-op:1.5.1'
    compile 'com.github.GrenderG:Toasty:1.2.5'
    compile 'com.orhanobut:logger:1.15'

    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.umeng.analytics:analytics:latest.integration'
    compile 'ai.api:libai:1.4.8'
    compile 'ai.api:sdk:2.0.5@aar'
// api.ai SDK dependencies
    compile 'com.google.code.gson:gson:2.8.0'
    compile 'commons-io:commons-io:2.4'
    compile 'com.Android.support:multidex:1.0.1'
}

quand j'ajoute ce code à mon fichier gradle.

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

Cette erreur serait résolue, mais un autre problème se produirait. comme ça

Java.lang.NoClassDefFoundError: com.squareup.leakcanary.internal.HeapAnalyzerService
at com.squareup.leakcanary.LeakCanary.isInAnalyzerProcess(LeakCanary.Java:145)
at cn.sz.cyrus.wemz.TestApplication.onCreate(TestApplication.kt:32)

Qui a des idées pour résoudre ce problème?

233
Cyrus

Vous pouvez ajouter ceci dans yourProject/app/build.gradle à l'intérieur de Android{}

Android {      
      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'
      }          
}
354
Shaaban Ebrahim

Dans mon cas, il suffisait d'exclure uniquement le chemin 'META-INF/LICENSE' sur yourProject/app/build.gradle à l'intérieur de Android{}. C'est ici

packagingOptions {
    exclude 'META-INF/LICENSE'
}

Et puis faire Clean Project et Rebuild Project.

92
Mara

Les solutions ici ne m'ont pas aidé, mais ce lien l'a fait.

Si vous avez une bibliothèque qui ajoute des fichiers Android .so - comme libassmidi.so ou libgnustl_shared.so–, vous devez indiquer gradle pour n'en choisir qu'un lors de l'emballage, sinon vous aurez le conflit.

Android {
  packagingOptions {
    pickFirst 'lib/armeabi-v7a/libassmidi.so'
    pickFirst 'lib/x86/libassmidi.so'
  }
}

Je rencontrais ce problème lorsque j'utilisais une application native React comme bibliothèque dans un projet Android. J'espère que ça aide

59
Daniel Reina

Avait un message similaire

Erreur: L'exécution a échoué pour la tâche ': app: transformResourcesWithMergeJavaResForDebug'. Plusieurs fichiers ont été trouvés avec le chemin indépendant du système d'exploitation 'constant-values.html'

Pour le résoudre, je devais activer la vue des packages ( 1 ) dans Android Studio, puis naviguer dans l'arborescence jusqu'aux bibliothèques, et localiser les doublons ( 2 )

Ensuite, ctrl + alt + f12 (ou le menu RMB) ( 3 ) - et les bibliothèques à l'origine du problème. Fait la liste des fichiers dans ces bibliothèques qui ont causé les problèmes, et les a écrit dans le fichier build.gradle de l'application dans la section Android . Une autre option est de traiter avec la bibliothèque, contenant les fichiers en double

packagingOptions {
    exclude 'allclasses-frame.html'
    exclude 'allclasses-noframe.html'
    <..>

enter image description here

29
Dmitriy Chichuk

Fondamentalement, lorsque gradle rassemble le fichier apk, il copie le contenu de toutes les dépendances de compilation. Il est suffisamment intelligent pour voir qu’il existe un fichier dupliqué..coming provenant de deux fichiers jar différents. Cela peut être n'importe quel fichier comme a.txt ou META-INF/DEPENDENCIES. Il peut être préférable d'exclure ces fichiers à l'aide de l'option ci-dessous, au cas où le fichier n'y serait présent qu'à des fins d'information.

Android{
    packagingOptions {
       exclude 'META-INF/DEPENDENCIES'
    }
}

Ou, si dans le cas contraire, le fichier est un fichier obligatoire semblable à un fichier de classe dupliqué sur deux dépendances de jar liées les unes aux autres, il est préférable de rechercher des alternatives à ces fichiers, sous la forme d'une version plus compatible.

20
ank

J'avais le même problème et j'ai essayé

Erreur: plusieurs fichiers ont été trouvés avec le chemin indépendant du système d'exploitation 'META-INF/proguard/androidx-annotations.pro'

Solution: Tout ce que vous avez à faire pour résoudre ce problème consiste à l'ajouter à la section Android {} du 'build.gradle' de votre application.

packagingOptions {
    exclude 'META-INF/proguard/androidx-annotations.pro'
}
18
Apoorva Jain

J'ai rencontré la même erreur, et j'ai trouvé qu'elle résultait de différents modules contenaient les mêmes classes de différents packages.

par exemple. Un paquet utilisé androidx, et l'autre utilisé pré-androidx

Je l'ai résolu en migrant le module pré-androidx vers androidx à l'aide de la fonction intégrée de Android Studio: "Refactor -> Migration vers Androidx ..." sans rien exclure.


Selon votre situation, vous pouvez vérifier si vous avez des incompatibilités de dépendance entre les modules.

16
Owen Chen

Cela se produit lors de l'utilisation

org.jetbrains.kotlinx: kotlinx-coroutines-core: 1.2.0

Et est corrigé dans la prochaine version

org.jetbrains.kotlinx: kotlinx-coroutines-core: 1.2.1

16
Vairavan

J'ai mis à jour Studio de Java 7 à Java 8, et ce problème est survenu. Puis je l'ai résolu de cette façon:

Android {
    defaultConfig {
    }
    buildTypes {
    }
    packagingOptions{
        exclude 'META-INF/rxjava.properties'
    }
}
10
Manasvi

Dans mon application, j’ajoutais les dépendances de jar comme ceci:

implementation files('libs/json-simple-1.1.1.jar')

Mais j'ai réalisé qu'ils avaient déjà été ajoutés à cause de la première ligne suivante dans les dépendances:

implementation fileTree(include: ['*.jar'], dir: 'libs')

Cette ligne ajoute tous les fichiers JAR du dossier lib à la dépendance de l'application.

Par conséquent, après avoir supprimé la dépendance supplémentaire implementation files('libs/json-simple-1.1.1.jar')

ça fonctionne bien.

8
Sandeep Yohans

J'ai lu toutes les réponses relatives à l'obtention de ce message dans Android Studio:

Plusieurs fichiers ont été trouvés avec le chemin indépendant du système d'exploitation 'META-INF/LICENSE'

mais dans ce cas, exclure des classes n'est pas nécessaire, il suffit d'exclure 'META-INF/DEPENDENCIES', cela peut être fait à l'intérieur de /app/build.gradle:

Android{
    ...
    ...
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
    }

}
4
Jorgesys

J'ai le même problème et j'ai essayé

Erreur: Plusieurs fichiers ont été trouvés avec le chemin d'accès indépendant du système d'exploitation 'META-INF/library_release.kotlin_module'

Solution:

Android {
    packagingOptions {
    exclude 'META-INF/library_release.kotlin_module'
    }
}

https://github.com/WindSekirun/NaraeImagePicker/issues/7

Travaillé pour moi ....

3
Bhavesh Moradiya

J'avais un problème similaire. je recevais le message d'erreur -

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.

More than one file was found with OS independent path 'javax/annotation/WillCloseWhenClosed.Java'

Comme indiqué dans certaines des réponses ci-dessus, l'utilisation du code ci-dessous fonctionne

'packagingOptions {
       exclude 'allclasses-frame.html'
    }'

Mais je recevais cette erreur pour 20 fichiers différents, donc après avoir exclu 20 fichiers, je me suis arrêté et j'ai essayé de trouver une solution décente. J'avais aussi rencontré le

'Unable to execute dex: Multiple dex files' error.

J'ai finalement réussi à résoudre ce problème.

Premièrement (comme dans mon cas, WillCloseWhenClosed.Java était le fichier en double), dans Android studio, vous avez la possibilité de "rechercher partout". Écrivez et recherchez le fichier ici. Là j'ai trouvé plusieurs instances de ce fichier. J'ai donc cliqué sur les deux instances et vu leur emplacement en faisant un clic droit sur le fichier et en voyant son emplacement lors de l'ouverture dans le studio Android.

Deuxièmement, j'ai compris que j'avais des dépendances dans le fichier Gradle. J'utilisais le code ci-dessous

dependencies {
    compile 'com.google.api-client:google-api-client:1.23.0'
}

et aussi j’avais leurs mêmes paquets Zip à l’emplacement:\Utilisateurs\utilisateur\AndroidStudioProjects\git\appname\app\libs\google-http-client-1.23 !.

Donc, c'était redondant et c'est pourquoi Gradle trouve 2 fichiers. J'ai donc supprimé mes paquets Zip et cela a résolu les erreurs pour moi. Soyez prudent en faisant cela. Vous devez déterminer quel est le bon fichier ou package à supprimer.

Troisièmement, Gradle crée également un fichier Zip de ces fichiers de bogues à cet emplacement (du moins pour moi, c’est fait) - C:\Program Files\Android\Android Studio\gradle\m2repository\com\google\code\findbugs\jsr305\1.3. 9\jsr305-1.3.9.jar!

donc je suis allé et supprimé le fichier jsr305-1.3.9.jar à partir d'ici aussi.

Si vous êtes toujours confus, lancez simplement la recherche partout dans le studio Android, recherchez les occurrences de votre fichier dans ce dossier et vous devrez en supprimer un. Prenez votre temps et trouvez lequel.

2
Vi012

J'ai rencontré ce problème, d'abord avec certaines bibliothèques natives (fichiers .so), puis avec les fichiers Java/Kotlin. Il s'est avéré que j'incluais une bibliothèque à partir des sources et que je faisais référence à un artificiel via une dépendance transitive. Vérifiez votre arbre de dépendance pour voir s’il existe des entrées redondantes. Utilisez ./gradlew :app:dependencies pour obtenir l’arbre de dépendance. Remplacez "app" par votre nom de module si le nom du module principal est différent.

1
notsopopularguy

Une autre solution que j'ai trouvée. Assurez-vous que vos versions sont identiques pour les mêmes bibliothèques parent et enfant, comme ci-dessous:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.Android.support:appcompat-v7:28.0.0'
    implementation 'com.Android.support.constraint:constraint-layout:1.1.3'
    **implementation 'com.google.Android.gms:play-services-maps:12.0.1'**
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.Android.support.test:runner:1.0.2'
    androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.Android.support:mediarouter-v7:28.0.0'
    **implementation 'com.google.Android.gms:play-services:12.0.1'**
}
0
Sanket Vekariya

Essayez de supprimer multidex de la configuration par défaut et consultez le journal des erreurs de construction. Si ce journal est compatible avec la classe INotification. Utilisez ceci dans Android {}

configurations {
    all*.exclude group: 'com.Android.support', module: 'support-v4'
}

Cela m'aide.

0
Harsh Mittal

Pour moi, la solution ci-dessous a fonctionné, vous pouvez également obtenir de l'aide, j'écris au-dessous de la ligne dans le fichier d'application

  packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
0
Android enthu.