Я клонировал репозиторий github, потому что хотел изучить код, но когда я попытался собрать его в Android Studio, я столкнулся с некоторыми проблемами. После добавления репозитория Google Maven (по запросу Android Studio) и обновления версии Gradle Plugin и Grade Version (до 3.5.2 и 5.4.1 соответственно) сборка завершается неудачно из-за следующей ошибки:
Причина: повторяющаяся запись: META-INF / MANIFEST.MF
И это, чтобы быть более конкретным:
Вызвано: java.util.zip.ZipException: повторяющаяся запись: META-INF / MANIFEST.MF
Вот мой файл build.gradle уровня проекта:
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'
}
}
}
Вот мой файл build.gradle модуля (прежде чем пытаться что-либо):
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'
}
Вот что я пробовал до сих пор:
- Добавление следующего в раздел Android моего модуля build.gradle файла:
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"
}
Я думаю, что я пробовал в основном все в этом вопросе: Как исключить определенные файлы из сборок для Android Studio?
Ничего не получалось.
После поиска решения, я думаю, проблема в том, что у меня есть дублированные зависимости. Итак, я попробовал следующее:
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'
}
И это:
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'
}
Я все еще получаю ту же ошибку.
Может ли кто-нибудь сказать мне, что я делаю не так? Спасибо в ожидании. :)
источник
Ответы:
Как сказал Rajen Raiyarela , перейдите в Файл-> Структура проекта-> Проект-> Версия плагина Android Gradle и понизьте его с 3.5.2 до 3.5.1.
источник
Установите зависимости проекта :
или последний.
Примечание: благодаря этому моя проблема была решена.
источник
Эта проблема возникает из-за дублированных зависимостей.
Проверьте наличие нескольких зависимостей в приложении Gradle.
источник
Либо упакуйте его один раз, либо совсем не
источник