【问题标题】:Prograurd Duplicate zip entry重复的 zip 条目
【发布时间】:2017-04-19 12:43:07
【问题描述】:

我在签署和发布 APK 时遇到问题。我收到 Duplicate zip entry 警告和一个错误,代码如下:

Information:Gradle tasks [:app:assembleRelease]
Warning:can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [gcm.jar:META-INF/MANIFEST.MF])
Warning:can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [gson-2.2.4.jar:META-INF/MANIFEST.MF])
Warning:can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [httpmime-4.2.2.jar:META-INF/MANIFEST.MF])
Warning:can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [joda-time-2.1.jar:META-INF/MANIFEST.MF])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [joda-time-2.1.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [joda-time-2.1.jar:META-INF/NOTICE.txt])
Warning:can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [splunk-mint-4.2.1.jar:META-INF/MANIFEST.MF])
Warning:can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [universal-image-loader-1.9.4.jar:META-INF/MANIFEST.MF])
Warning:can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [classes.jar:META-INF/MANIFEST.MF])
Warning:can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [support-annotations-24.0.0.jar:META-INF/MANIFEST.MF])
Warning:can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [classes.jar:META-INF/MANIFEST.MF])
Error:Execution failed for task ':app:transformClassesWithMultidexlistForRelease'.
> java.io.IOException: Can't write [D:\Android\Android_Project\myapp\app\build\intermediates\multi-dex\release\componentClasses.jar] (Can't read [C:\Users\Amir Mahmoud\.android\build-cache\3936c6cf75e73634f829890fcc2030092ab8dabe\output\jars\classes.jar] (Duplicate zip entry [classes.jar:android/support/v4/view/ViewCompat$ICSViewCompatImpl.class]))

我什至尝试向 gradle 添加打包选项,但没有成功这是我的 gradle 代码:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    useLibrary  'org.apache.http.legacy'
    defaultConfig {
        applicationId "com.company.myapp"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 70
        versionName "7.4"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'META-INF/MANIFEST.MF'
        exclude 'META-INF/NOTICE.txt'
    }
    lintOptions {
        checkReleaseBuilds false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    //    compile 'com.android.support:appcompat-v4:25'
    testCompile 'junit:junit:4.12'
    //    compile fileTree(include: '*.jar', dir: 'libs')
    compile 'com.google.android.gms:play-services:10.2.1'
    //    compile "com.google.android.gms:play-services-gcm:10.2.1"
    //    compile 'org.apache.httpcomponents:httpmime:4.5.3'
    //    compile files('libs/gson-2.2.4.jar')
    //    compile files('libs/httpmime-4.2.2.jar')
    //    compile files('libs/joda-time-2.1.jar')
    //    compile files('libs/universal-image-loader-1.9.4.jar')
//    compile files('libs/android-support-v4.jar')

}

我在这个项目上停留了几天,我不知道如何处理它,欢迎任何帮助。

【问题讨论】:

    标签: android android-studio gradle


    【解决方案1】:

    除了 Jared 的回答之外,如果您收到关于重复 .class 文件的错误,而不仅仅是 META-INF/ 文件,您可能需要排除包含重复 .class 文件的违规模块( s)。

    您需要确定哪个依赖项包含具有重复 .class 条目的模块,并从所述依赖项中排除该模块。

    您可以使用 Gradle 命令:./gradlew app:dependencies 列出完整的依赖关系图。其中“app:”是您项目的模块/应用程序的名称。

    使用./gradlew app:dependencies 命令后,您应该查看依赖项列表并找到包含具有重复.class 条目的违规模块的依赖项。

    例如,假设com.android.support:support-v4 是具有导致这些错误的重复类的模块。以下是如何从您的依赖项中排除该重复模块:

    //Your dependency that includes the module with the duplicates.
    compile('com.my.project:my-module:0.1') {
            //exclude the offending module so there won’t be duplicates.
            exclude module: 'support-v4'
            //maybe you need to exclude a group also?...
            exclude group: 'com.google.android.gms'
        }
    

    【讨论】:

    • 我正在使用 Ionic,但我没有 compile() 行。无论如何,重新安装 android 平台就可以了。
    猜你喜欢
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多