J'ai cloné un référentiel github parce que je voulais étudier le code, mais quand j'ai essayé de le construire dans Android Studio, j'ai rencontré des problèmes. Après avoir ajouté le référentiel google maven (comme demandé par Android Studio) et mis à jour à la fois la version du plug-in Gradle et la version de la note (vers 3.5.2 et 5.4.1, respectivement), la construction échoue en raison de l'erreur suivante:
Cause: entrée en double: META-INF / MANIFEST.MF
Et ceci, pour être plus précis:
Provoqué par: java.util.zip.ZipException: entrée en double: META-INF / MANIFEST.MF
Voici mon fichier build.gradle au niveau du projet:
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
maven {
url 'https://maven.google.com'
}
}
}
Voici mon fichier build.gradle du module (avant d'essayer quoi que ce soit):
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "com.thelittlenaruto.supportdesignexample"
minSdkVersion 11
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation ('com.android.support:appcompat-v7:22.2.1')
implementation ('com.android.support:design:22.2.1')
implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
}
Voici ce que j'ai essayé jusqu'à présent:
- Ajout de ce qui suit à la section Android de mon fichier build.gradle du module:
sourceSets {
main{
java{
exclude '**/META-INF/MANIFEST'
exclude '**/META-INF/MANIFEST.MF'
exclude 'META-INF/MANIFEST'
exclude 'META-INF/MANIFEST.MF'
exclude '!META-INF/MANIFEST.MF'
}
}
}
- Ajout de ceci:
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST'
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST.MF'
- Aussi ceci:
packagingOptions {
apply plugin: 'project-report'
exclude '**/META-INF/MANIFEST'
exclude '**/META-INF/MANIFEST.MF'
exclude 'META-INF/MANIFEST'
exclude 'META-INF/MANIFEST.MF'
exclude '!META-INF/MANIFEST.MF'
}
- Et ça:
packagingOptions {
pickFirst '**/META-INF/MANIFEST'
pickFirst '**/META-INF/MANIFEST.MF'
pickFirst 'META-INF/MANIFEST'
pickFirst 'META-INF/MANIFEST.MF'
pickFirst '!META-INF/MANIFEST.MF'
}
- Cette:
aaptOptions {
ignoreAssetsPattern "!META-INF/MANIFEST.MF"
ignoreAssetsPattern "META-INF/MANIFEST.MF"
}
Je pense que j'ai essayé presque tout dans cette question: comment exclure certains fichiers des versions de gradle d'Android Studio?
Rien n'a fonctionné.
Après avoir cherché une solution, je pense que le problème est que j'ai des dépendances dupliquées. J'ai donc essayé ce qui suit:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation ('com.android.support:appcompat-v7:22.2.1'){
exclude module: 'support-v4'
}
implementation ('com.android.support:design:22.2.1')
implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
}
Et ça:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation ('com.android.support:design:22.2.1'){
exclude module: 'support-v7'
}
implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
}
Je reçois toujours la même erreur.
Quelqu'un pourrait-il me dire ce que je fais mal? Merci d'avance. :)
la source
Réponses:
Comme l'a dit Rajen Raiyarela , allez dans Fichier-> Structure du projet-> Projet-> Version du plug-in Android Gradle et rétrogradez-le de 3.5.2 à 3.5.1.
la source
Définissez les dépendances du projet sur:
ou le dernier.
Remarque: ce faisant, mon problème a été résolu.
la source
Ce problème se produit en raison de dépendances en double.
Recherchez plusieurs dépendances dans l'application Gradle.
la source
Soit l'emballer une fois ou pas du tout:
la source