Prograurd 重复的 zip 条目 [英] Prograurd Duplicate zip entry

查看:31
本文介绍了Prograurd 重复的 zip 条目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在签署和发布 APK 时遇到问题.我收到重复的 zip 条目警告和一个错误,代码如下:

I have a problem with signing and releasing an APK. I get Duplicate zip entry warnings and one error, Here is the code:

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 代码:

I even tried adding packaging options to the gradle but it did not work this is my gradle code:

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')

}

我在这个项目上被困了几天,我不知道该怎么办,欢迎任何帮助.

I am stuck on this project for a few days and I don't know what to do with it, any helps are welcomed.

推荐答案

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

In addition to Jared’s answer, if you receive an error about a duplicate .class file(s), not just the META-INF/ files, you may need to exclude the offending module that includes the duplicate .class file(s).

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

You will need to identify which dependency is including the module with the duplicate .class entries and exclude that module from said dependency.

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

You can use the Gradle command: ./gradlew app:dependencies to list the complete dependency graph. Where "app:" is the name of your project's module/app.

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

After using the ./gradlew app:dependencies command you should look through the list of dependencies and find the one that is including the offending module with the duplicate .class entries.

举个例子,假设 com.android.support:support-v4 是导致这些错误的重复类的模块.以下是从您的依赖项中排除该重复模块的方法:

As an example, lets say that com.android.support:support-v4 is the module with the duplicate classes that are causing these errors. Here's how to exclude that duplicate module from your dependency:

//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'
    }

这篇关于Prograurd 重复的 zip 条目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆