java - Proguard : google. gms - 重复的 zip 条目 c.class == zzab.class

标签 java android proguard android-proguard

我正在尝试设置 proguard 以避免在使用 Dagger 2 + Data 时出现 64k 方法绑定(bind)

我在 Proguard 中优化了很多行之后遇到了这个问题:

    Copying resources from program jar [\app\build\intermediates\exploded-aar\io.fabric.sdk.android\fabric\1.3.14\jars\classes.jar] (filtered)
  Copying resources from program jar [.gradle\caches\modules-2\files-2.1\com.parse.bolts\bolts-android\1.4.0\cc174c559b5177982887bf6e1b76003aebad9516\bolts-android-1.4.0.jar] (filtered)
  Copying resources from program jar [\app\build\intermediates\exploded-aar\com.google.firebase\firebase-common\9.4.0\jars\classes.jar] (filtered)
  Copying resources from program jar [\app\build\intermediates\exploded-aar\com.android.support\support-media-compat\24.2.1\jars\libs\internal_impl-24.2.1.jar] (filtered)
  Copying resources from program jar [\app\build\intermediates\exploded-aar\fr.tvbarthel.blurdialogfragment\lib\3.0.2\jars\classes.jar] (filtered)
  Copying resources from program jar [\app\build\intermediates\exploded-aar\com.crashlytics.sdk.android\beta\1.2.2\jars\classes.jar] (filtered)
  Copying resources from program jar [\app\build\intermediates\exploded-aar\com.google.android.gms\play-services-basement\9.4.0\jars\classes.jar] (filtered)
Warning: Exception while processing task java.io.IOException: Can't write [\app\build\intermediates\transforms\proguard\japan\debug\jars\3\1f\main.jar] (Can't read [\app\build\intermediates\exploded-aar\com.google.android.gms\play-services-basement\9.4.0\jars\classes.jar(;;;;;;**.class)] (Duplicate zip entry [com/google/android/gms/common/internal/c.class == classes.jar:com/google/android/gms/common/internal/zzab.class]))
:app:transformClassesAndResourcesWithProguardForJapanDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesAndResourcesWithProguardForJapanDebug'.
> java.io.IOException: Can't write [\app\build\intermediates\transforms\proguard\japan\debug\jars\3\1f\main.jar] (Can't read [\app\build\intermediates\exploded-aar\com.google.android.gms\play-services-basement\9.4.0\jars\classes.jar(;;;;;;**.class)] (Duplicate zip entry [com/google/android/gms/common/internal/c.class == classes.jar:com/google/android/gms/common/internal/zzab.class]))

我研究了一些文章,知道它可能与 Duplicated jar 问题有关,但我不知道在哪里正确设置 exclude

请知道的 friend 帮我解决

非常感谢,

p/s :

这是混淆文件:

    # Google gms
#-keep public class com.google.android.gms.* { public *; }
-dontwarn com.google.android.gms.**

#rx java
-dontwarn rx.internal.util.unsafe.**

#picaso
-dontwarn jp.wasabeef.picasso.transformations.gpu.**

#graphview
-dontwarn com.jjoe64.graphview.helper.**

# Ignore warnings: We are not using DOM model
-dontwarn com.fasterxml.jackson.databind.ext.DOMSerializer

# Keep Jackson stuff
-keep class org.codehaus.** { *; }
-keep class com.fasterxml.jackson.annotation.** { *; }

# Keep Retrofit
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
    @retrofit.** *;
}
-keepclassmembers class * {
    @retrofit.** *;
}

# Keep Picasso
-keep class com.squareup.picasso.** { *; }
-keepclasseswithmembers class * {
    @com.squareup.picasso.** *;
}
-keepclassmembers class * {
    @com.squareup.picasso.** *;
}

app.gradle :

    apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'io.fabric'
apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion 24
    buildToolsVersion "25.0.0"
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 24
        versionCode 1
        versionName "2.3.6"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    signingConfigs {
        debug {}
        release {}
    }
    buildTypes {
        debug {
            shrinkResources true
            minifyEnabled true
            applicationIdSuffix ".debug"
            signingConfig signingConfigs.debug
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }
    // Product flavors
    productFlavors {
        japan {
            applicationIdSuffix ".japan"
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    dataBinding {
        enabled = true
    }

    retrolambda {
        jvmArgs '-noverify'
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE-FIREBASE.txt'
        exclude 'META-INF/NOTICE'
    }

}

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'
    })
    // Default - Android Component
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:design:24.2.1'
    compile 'com.android.support:appcompat-v7:24.2.1'
    // Dagger 2
    apt 'com.google.dagger:dagger-compiler:2.6.1'
    provided 'org.glassfish:javax.annotation:10.0-b28'
    compile 'com.google.dagger:dagger:2.6.1'
    // Retrofit2 + Gson
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
    compile 'com.squareup.okhttp3:okhttp:3.4.1'
    // RxJva
    compile 'io.reactivex:rxandroid:1.2.0'
    compile 'io.reactivex:rxjava:1.1.4'
    // Firebase
    compile 'com.firebase:firebase-client-android:2.5.2'
    compile 'com.google.firebase:firebase-messaging:9.4.0'
    // Butter Knife
    apt 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.jakewharton:butterknife:8.4.0'
    // Timber
    compile 'com.jakewharton.timber:timber:4.3.0'
    // Picasso
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'jp.wasabeef:picasso-transformations:1.0.5'
    // Custom font : using in XML
    compile 'uk.co.chrisjenx:calligraphy:2.2.0'
    // Facebook Rebound Animation
    compile 'com.facebook.rebound:rebound:0.3.7'
    // Blur dialog
    compile 'fr.tvbarthel.blurdialogfragment:lib:3.0.2@aar'
    // Twitter api
    compile('com.twitter.sdk.android:twitter:2.1.1@aar') {
        transitive = true;
    }
    // Facebook api
    compile ('com.facebook.android:facebook-android-sdk:4.15.0'){
//        exclude module: 'bolts-android'
        exclude module: 'support-v4'
    }

    compile 'net.qiujuer.genius:blur:1.0.0'

    compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'

    compile project(':CropImage')

    //request permission
    compile 'com.tbruyelle.rxpermissions:rxpermissions:0.7.0@aar'
    //crash report
    compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
        transitive = true;
    }
    compile 'com.github.ksoichiro:android-observablescrollview:1.5.0'
}

项目 app.gradle

buildscript {
    repositories {
        jcenter()
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'

        // Dagger 2
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

        //retrolambda
        classpath 'me.tatarka:gradle-retrolambda:3.2.4'

        classpath 'io.fabric.tools:gradle:1.+'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

        classpath 'com.google.gms:google-services:3.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://dl.bintray.com/l-offshore-team/l-offshore-libs/" }
        maven { url 'https://maven.fabric.io/public' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

最佳答案

我遇到了同样的问题。对我来说,问题是我还有一些其他的 Google Play 服务依赖项,但版本不同。一旦我确定它们具有相同的版本,问题就解决了。

希望这对某人有帮助。

关于java - Proguard : google. gms - 重复的 zip 条目 c.class == zzab.class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40446595/

相关文章:

java - 关键路径法算法

java - 使用此自定义格式解析 DateTime

java - Spring 的 threadlocal bean 的行为类似于单例

java - Java 字母频率程序

java - onCreateDialog 上的 "Overrides deprecated method"

android - 无法构建 APK

android - IBM MobileFirst 7 依赖项

android - Fragment不调用ListView的getView方法

android - 如何在 Android 中使用 GeoTools 显示 map ?

java - 添加 Google Play 服务和 Proguard 时出现警告?