He clonado un repositorio de github porque quería estudiar el código, pero cuando intenté compilarlo en Android Studio, tuve algunos problemas. Después de agregar el repositorio de google maven (como lo solicitó Android Studio) y actualizar tanto la versión del complemento de Gradle como la versión de grado (a 3.5.2 y 5.4.1, respectivamente), la compilación falla debido al siguiente error:
Causa: entrada duplicada: META-INF / MANIFEST.MF
Y esto, para ser más específico:
Causado por: java.util.zip.ZipException: entrada duplicada: META-INF / MANIFEST.MF
Aquí está mi archivo build.gradle a nivel de proyecto:
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'
}
}
}
Aquí está mi archivo build.gradle de módulo (antes de intentar cualquier cosa):
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'
}
Esto es lo que he probado hasta ahora:
- Agregar lo siguiente a la sección de Android del archivo build.gradle de mi módulo:
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'
}
}
}
- Agregando esto:
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST'
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST.MF'
- También esto:
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'
}
- Y esto:
packagingOptions {
pickFirst '**/META-INF/MANIFEST'
pickFirst '**/META-INF/MANIFEST.MF'
pickFirst 'META-INF/MANIFEST'
pickFirst 'META-INF/MANIFEST.MF'
pickFirst '!META-INF/MANIFEST.MF'
}
- Esta:
aaptOptions {
ignoreAssetsPattern "!META-INF/MANIFEST.MF"
ignoreAssetsPattern "META-INF/MANIFEST.MF"
}
Creo que he intentado casi todo en esta pregunta: ¿Cómo excluir ciertos archivos de las compilaciones de gradle de Android Studio?
Nada funcionó.
Después de buscar una solución, creo que el problema es que tengo dependencias duplicadas. Así que probé lo siguiente:
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'
}
Y esto:
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'
}
Todavía recibo el mismo error.
¿Podría alguien decirme qué estoy haciendo mal? Gracias de antemano. :)
fuente
Respuestas:
Como dijo Rajen Raiyarela , vaya a Archivo-> Estructura del proyecto-> Proyecto-> Versión del complemento de Android Gradle y descárguela de 3.5.2 a 3.5.1.
fuente
Establecer dependencias del proyecto para:
o el último.
Nota: al hacer esto, mi problema ha sido resuelto.
fuente
Este problema ocurre debido a dependencias duplicadas.
Verifique si hay varias dependencias en la aplicación Gradle.
fuente
Ya sea empaquetarlo una vez o no hacerlo:
fuente