Saya sudah kloning repositori github karena saya ingin mempelajari kode, tetapi ketika saya mencoba membangunnya di Android Studio, saya mengalami beberapa masalah. Setelah menambahkan repositori google maven (seperti yang diminta oleh Android Studio) dan memperbarui Versi Plugin Gradle dan Versi Grade (masing-masing ke 3.5.2 dan 5.4.1), build gagal karena kesalahan berikut:
Penyebab: entri rangkap: META-INF / MANIFEST.MF
Dan ini, untuk lebih spesifik:
Disebabkan oleh: java.util.zip.ZipException: entri rangkap: META-INF / MANIFEST.MF
Ini file build.gradle tingkat proyek saya:
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'
}
}
}
Ini file modul build.gradle saya (sebelum mencoba apa pun):
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'
}
Inilah yang saya coba sejauh ini:
- Menambahkan berikut ini ke bagian android file build.gradle modul saya:
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'
}
}
}
- Menambahkan ini:
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST'
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST.MF'
- Ini juga:
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'
}
- Dan ini:
packagingOptions {
pickFirst '**/META-INF/MANIFEST'
pickFirst '**/META-INF/MANIFEST.MF'
pickFirst 'META-INF/MANIFEST'
pickFirst 'META-INF/MANIFEST.MF'
pickFirst '!META-INF/MANIFEST.MF'
}
- Ini:
aaptOptions {
ignoreAssetsPattern "!META-INF/MANIFEST.MF"
ignoreAssetsPattern "META-INF/MANIFEST.MF"
}
Saya pikir saya sudah mencoba sebagian besar segalanya dalam pertanyaan ini: Bagaimana cara mengecualikan file tertentu dari Android Studio gradle builds?
Tidak ada yang berhasil.
Setelah mencari solusi, saya pikir masalahnya adalah saya memiliki duplikasi dependensi. Jadi saya sudah mencoba yang berikut ini:
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'
}
Dan ini:
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'
}
Saya tetap mengalami masalah yang sama.
Adakah yang bisa memberi tahu saya apa yang saya lakukan salah? Terima kasih atas antisipasi. :)
sumber
Jawaban:
Seperti yang dikatakan Rajen Raiyarela , buka File-> Project Structure-> Project-> Android Gradle Plugin Version dan turunkan versi dari 3.5.2 ke 3.5.1.
sumber
Tetapkan dependensi proyek ke:
atau yang terbaru.
Catatan: dengan melakukan ini, masalah saya telah teratasi.
sumber
Masalah ini terjadi karena ketergantungan duplikat.
Periksa beberapa dependensi di aplikasi Gradle.
sumber
Baik mengemasnya sekali atau tidak sama sekali:
sumber