Proguard Exception java.io.IOException: Duplicate zip entry

匿名 (未验证) 提交于 2019-12-03 00:59:01

问题:

While building app with proguard for release i got this error.

Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.

Warning:Exception while processing task java.io.IOException: Can't write  [C:\Users\sagar.HP\AndroidStudioProjects\MyApp\app\build\intermediates\ transforms\proguard\release\jars\3\1f\main.jar] (Can't read  [C:\Users\sagar.HP\.android\build- cache\bf0ee9d089eb4a68c393\output\jars\classes.jar(;;;;;;**.class)]  (Duplicate zip entry [com/google/android/gms/internal/bs.class ==  classes.jar:com/google/android/gms/internal/zzas.class])) 

build.gradle file:

 android {     compileSdkVersion 25     buildToolsVersion "26.0.0"     defaultConfig {         applicationId "com.ardent.sys.telugulivetv"         minSdkVersion 17         targetSdkVersion 25         versionCode 12         versionName "2.3.0"         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"     }  buildTypes {         release {             shrinkResources false             minifyEnabled true              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'              applicationVariants.all { variant ->                 variant.outputs.each { output ->                     project.ext { appName = 'Telugu Live TV' }                     def formattedDate = new Date().format('yyyyMMddHHmmss')                     def newName = output.outputFile.name                     newName = newName.replace("app-", "$project.ext.appName-") //"MyAppName" -> I set my app variables in the root project                     newName = newName.replace("-release", "-release" + formattedDate)                     //noinspection GroovyAssignabilityCheck                     output.outputFile = new File(output.outputFile.parent, newName)                 }             }         }     }      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 files('libs/YouTubeAndroidPlayerApi.jar')       compile ('com.adincube.sdk:AdinCube-Java-206ebf:1.+@aar') {         transitive = true     }     compile('com.adincube.sdk:AdinCube-Native-RecyclerView-Extension:1.+') {         transitive = true     }     compile 'com.android.support:appcompat-v7:25.3.1'     compile 'com.android.support:recyclerview-v7:25.3.1'     compile 'com.android.support:cardview-v7:25.3.1'     compile 'com.android.support:design:25.3.1'     compile 'com.android.support:support-v4:25.3.1'      compile 'com.mcxiaoke.volley:library-aar:1.0.1'      compile 'com.google.firebase:firebase-crash:11.0.2'     compile 'com.google.firebase:firebase-core:11.0.2'     compile 'com.google.firebase:firebase-messaging:11.0.2'      compile 'com.squareup.picasso:picasso:2.5.2'      compile 'com.facebook.android:audience-network-sdk:4.+'      compile 'com.android.support.constraint:constraint-layout:1.0.2'      compile 'com.google.code.gson:gson:2.8.1'      testCompile 'junit:junit:4.12' }   apply plugin: 'com.google.gms.google-services' 

Proguard-rules.pro

-keep public class com.google.android.gms.* { public *; } -dontwarn com.google.android.gms.** -dontwarn com.squareup.okhttp.** 

I read all the related questions, but that doesn't solved my problem. please help me solve this error.

回答1:

There is a conflict between play-service-ads used by audience-network-sdk facebook module and those used by firebase module. The following will fix it :

compile('com.facebook.android:audience-network-sdk:4.+') {     exclude module: 'play-services-ads' } compile 'com.google.android.gms:play-services-ads:11.0.2' 

But after that, you have another conflict (not related to play-sevice this time) :

com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/facebook/ads/AbstractAdListener.class

This happens because com.adincube.sdk:AdinCube-Java-206ebf includes a dependency to com.adincube.partner:facebook which has the package name com.facebook.ads. I guess it's an unofficial modified package of facebook library. If you are sure you don't need this dependency, you can exclude it :

compile('com.adincube.sdk:AdinCube-Java-206ebf:1.+@aar') {     transitive = true     exclude module: 'facebook' } 

Otherwise contact adincube.com for instructions about integrating their module with com.facebook.android:audience-network-sdk



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!