Ich habe ein Github-Repository geklont, weil ich den Code studieren wollte, aber als ich versuchte, ihn in Android Studio zu erstellen, hatte ich einige Probleme. Nach dem Hinzufügen des Google Maven-Repositorys (gemäß Aufforderung von Android Studio) und dem Aktualisieren der Gradle Plugin-Version und der Grade-Version (auf 3.5.2 bzw. 5.4.1) schlägt der Build aufgrund des folgenden Fehlers fehl:
Ursache: doppelter Eintrag: META-INF / MANIFEST.MF
Und das, um genauer zu sein:
Auslöser: java.util.zip.ZipException: doppelter Eintrag: META-INF / MANIFEST.MF
Hier ist meine build.gradle-Datei auf Projektebene:
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'
}
}
}
Hier ist meine Datei build.gradle (bevor Sie etwas ausprobieren):
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'
}
Folgendes habe ich bisher versucht:
- Hinzufügen des folgenden zum Android-Abschnitt meines Moduls build.gradle-Datei:
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'
}
}
}
- Hinzufügen dieses:
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST'
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST.MF'
- Auch das:
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'
}
- Und das:
packagingOptions {
pickFirst '**/META-INF/MANIFEST'
pickFirst '**/META-INF/MANIFEST.MF'
pickFirst 'META-INF/MANIFEST'
pickFirst 'META-INF/MANIFEST.MF'
pickFirst '!META-INF/MANIFEST.MF'
}
- Diese:
aaptOptions {
ignoreAssetsPattern "!META-INF/MANIFEST.MF"
ignoreAssetsPattern "META-INF/MANIFEST.MF"
}
Ich glaube, ich habe in dieser Frage fast alles versucht: Wie kann ich bestimmte Dateien von Android Studio Gradle Builds ausschließen?
Nichts hat geklappt.
Nach der Suche nach einer Lösung denke ich, dass das Problem darin besteht, dass ich Abhängigkeiten dupliziert habe. Also habe ich folgendes versucht:
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'
}
Und das:
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'
}
Ich bekomme immer noch den gleichen Fehler.
Könnte mir bitte jemand sagen, was ich falsch mache? Vielen Dank im Voraus. :) :)
quelle
Antworten:
Wie Rajen Raiyarela sagte, gehen Sie zu Datei-> Projektstruktur-> Projekt-> Android Gradle Plugin Version und stufen Sie es von 3.5.2 auf 3.5.1 herunter.
quelle
Setzen Sie die Projektabhängigkeiten auf:
oder neueste.
Hinweis: Auf diese Weise wurde mein Problem behoben.
quelle
Dieses Problem tritt aufgrund doppelter Abhängigkeiten auf.
Suchen Sie in der Gradle-App nach mehreren Abhängigkeiten.
quelle
Entweder einmal verpacken oder gar nicht:
quelle