I've cloned a github repository because I wanted to study the code, but when I tried to build it in Android Studio, I ran into some trouble. After adding the google maven repository (as prompted by Android Studio) and updating both the Gradle Plugin Version and the Grade Version (to 3.5.2 and to 5.4.1, respectively), the build fails because of the following error:
Cause: duplicate entry: META-INF/MANIFEST.MF
And this, to be more specific:
Caused by: java.util.zip.ZipException: duplicate entry: META-INF/MANIFEST.MF
Here is my project level build.gradle file:
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' } } }
Here's my module build.gradle file (before trying anything):
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' }
Here's what I've tried so far:
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" }
I think I've tried mostly everything in this question: How to exclude certain files from Android Studio gradle builds?
Nothing worked.
After searching for a solution, I think the problem is that I have duplicated dependencies. So I've tried the following:
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' }
And this:
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' }
I still get the same error.
What am I doing wrong?
As Rajen Raiyarela said, go to File->Project Structure->Project->Android Gradle Plugin Version and downgrade it from 3.5.2 to 3.5.1.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With