2017-04-19 62 views
2

我遇到了签名和发布APK的问题。我得到重复的ZIP条目警告和一个错误,下面是代码:计划重复的zip条目

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

} 

我我坚持了这个项目几天,我不知道该怎么做,欢迎任何帮助。

回答

2

除了Jared的答案,如果你收到一个错误有关重复.class文件,而不仅仅是META-INF/文件,您可能需要排除包含重复.class文件的有问题的模块。

您将需要确定哪个依赖包括具有重复.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' 
    }