Eu clonei um repositório do github porque queria estudar o código, mas quando tentei construí-lo no Android Studio, tive alguns problemas. Após adicionar o repositório google maven (conforme solicitado pelo Android Studio) e atualizar a versão Gradle Plugin e a versão Grade (para 3.5.2 e 5.4.1, respectivamente), a compilação falha devido ao seguinte erro:
Causa: entrada duplicada: META-INF / MANIFEST.MF
E isso, para ser mais específico:
Causado por: java.util.zip.ZipException: entrada duplicada: META-INF / MANIFEST.MF
Aqui está o meu arquivo build.gradle no nível do projeto:
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'
}
}
}
Aqui está o meu arquivo build.gradle do módulo (antes de tentar qualquer coisa):
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'
}
Aqui está o que eu tentei até agora:
- Adicionando o seguinte à seção android do meu arquivo build.gradle do 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'
}
}
}
- Adicionando isso:
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST'
sourceSets.main.res.filter.exclude 'META-INF/MANIFEST.MF'
- Também isto:
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'
}
- E isto:
packagingOptions {
pickFirst '**/META-INF/MANIFEST'
pickFirst '**/META-INF/MANIFEST.MF'
pickFirst 'META-INF/MANIFEST'
pickFirst 'META-INF/MANIFEST.MF'
pickFirst '!META-INF/MANIFEST.MF'
}
- Este:
aaptOptions {
ignoreAssetsPattern "!META-INF/MANIFEST.MF"
ignoreAssetsPattern "META-INF/MANIFEST.MF"
}
Acho que tentei quase tudo nesta questão: como excluir certos arquivos das compilações graduais do Android Studio?
Nada funcionou.
Depois de procurar uma solução, acho que o problema é que tenho dependências duplicadas. Então, eu tentei o seguinte:
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'
}
E isto:
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'
}
Ainda obtenho o mesmo erro.
Alguém poderia me dizer o que estou fazendo de errado? Obrigado em antecipação. :)
fonte
Respostas:
Como Rajen Raiyarela disse, vá para Arquivo-> Estrutura do projeto-> Projeto-> Versão do plug-in Android Gradle e faça o downgrade de 3.5.2 para 3.5.1.
fonte
Defina as dependências do projeto para:
ou mais recente.
Nota: ao fazer isso, meu problema foi resolvido.
fonte
Esse problema está acontecendo devido a dependências duplicadas.
Verifique se há várias dependências no aplicativo Gradle.
fonte
Empacote ou não uma vez:
fonte