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 en mettant à jour la version du plug-in Gradle et la version de la note (vers 3.5.2 et vers 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 de 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:
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'
}
}
}
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST'
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST.MF'
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'
}
packagingOptions {
pickFirst '**/META-INF/MANIFEST'
pickFirst '**/META-INF/MANIFEST.MF'
pickFirst 'META-INF/MANIFEST'
pickFirst 'META-INF/MANIFEST.MF'
pickFirst '!META-INF/MANIFEST.MF'
}
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 de Android Builds Studio Gradle?
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. :)
Soit l'emballer une fois ou pas du tout:
Android {
packagingOptions {
pickFirst "META-INF/MANIFEST.MF"
// exclude "META-INF/MANIFEST.MF"
}
}