コードを調べたかったのでgithubリポジトリのクローンを作成しましたが、Android Studioでビルドしようとすると、問題が発生しました。googlemavenリポジトリを追加した後(プロンプトに従って) Android Studio)で、Gradleプラグインのバージョンとグレードのバージョンの両方を更新すると(それぞれ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'
}
これが私がこれまでに試したことです:
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 gradle buildsから特定のファイルを除外する方法?
何もうまくいきませんでした。
解決策を探したところ、依存関係が重複していることが問題だと思います。だから私は以下を試しました:
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'
}
それでも同じエラーが発生します。
誰かが私が間違っていることを教えてもらえますか?よろしくお願いします。 :)
一度パッケージ化するか、まったくパッケージ化しないかのどちらかです。
Android {
packagingOptions {
pickFirst "META-INF/MANIFEST.MF"
// exclude "META-INF/MANIFEST.MF"
}
}