android - Gradle重复条目错误: META-INF/MANIFEST. MF(或如何从jar中删除文件)

标签 android android-studio gradle build.gradle

我克隆了一个 github 存储库,因为我想研究代码,但是当我尝试在 Android Studio 中构建它时,我遇到了一些麻烦。 添加 google maven 存储库(按照 Android Studio 的提示)并更新 Gradle 插件版本和 Grade 版本(分别为 3.5.2 和 5.4.1)后,构建失败,因为出现以下错误:

Cause: duplicate entry: META-INF/MANIFEST.MF

更具体地说,这是:

Caused by: java.util.zip.ZipException: duplicate entry: 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'
    }

这是我迄今为止尝试过的:

  • 将以下内容添加到我的模块 build.gradle 文件的 android 部分:

    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"
        }

我想我已经尝试了这个问题中的大部分内容: How to exclude certain files from 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'
    }

我仍然遇到同样的错误。

我做错了什么?

最佳答案

Rajen Raiyarela也就是说,转到 File->Project Structure->Project->Android Gradle Plugin Version 并将其从 3.5.2 降级到 3.5.1。

关于android - Gradle重复条目错误: META-INF/MANIFEST. MF(或如何从jar中删除文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58787269/

相关文章:

android - 适用于 Android 的 KSOAP2 提供

android - Cocos2d-x 在光标焦点上更改 MenuItemImage

java - Android自定义ArrayAdapter : "unfortunately, app has stopped" while scrolling

Android NDK : Multiple definition of . o 和 .c 文件

android - Cordova、q.js thorwing e、android 工具在路径中

java - 如何让数字键盘上的 "done"按钮做一些 Action ?

android-studio - 如何自动生成Kotlin类名称以匹配Android Studio中的新Kotlin文件

java - Gradle 从外部依赖运行 MainClass

android - Android Studio中的同步项目失败

android - multiDexEnabled不起作用