2017-04-19 58 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' 
    }