Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to solve this error ( duplicate entry: com/google/gson/annotations/Expose.class? )

each time I try to build an APK, this error keep showing !? I've tried almost all the soultoins mention on the site, but no luck!

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.

com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/gson/annotations/Expose.class

My gradle file:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.1'


    lintOptions {
        quiet true
        abortOnError false
        ignoreWarnings true
    }
    configurations {
        all*.exclude group: 'commons-io'

    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE-FIREBASE.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'BinaryEncoder.java'
    }

    defaultConfig {
        applicationId "com.xxxx.xxxxx"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 3
        versionName "1.2"
        multiDexEnabled true
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
        }
    }
    sourceSets {
        main {
            java {
                exclude 'com.twilio:client-android:1.2.18.org.apache.http.lejacy.jar.org.apache.BinaryEncoder.java'
                exclude 'org.apache.commons.codec.BinaryEncoder.java'
            }
        }
        androidTest {
            java {
                exclude 'commons-codec-1.10/**'
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
     compile('com.twilio:client-android:1.2.18') {
        exclude group: 'org.apache.commons', module: 'commons-io'
    }
    compile project(':example')
    compile project(':zoomcommonlib')
    compile project(':zoommobilertc')

    compile("com.github.hotchemi:permissionsdispatcher:2.4.0") {
         exclude module: "support-v13"
    }

    compile('com.stripe:stripe-android:4.1.5') {
        transitive = true;
        exclude  group: 'com.google.code.gson', module: 'gson'
    }
    compile('com.squareup.retrofit:retrofit:1.9.0') {
        transitive = true;
        exclude  group: 'com.google.code.gson', module: 'gson'
    }

    compile 'com.google.android.gms:play-services-gcm:11.2.0'
     compile 'lib.kingja.switchbutton:switchbutton:1.1.3'
    compile 'com.orhanobut:hawk:2.0.1'
     compile 'com.afollestad:material-camera:0.4.4'
    compile 'com.werb.pickphotoview:pickphotoview:0.3.0'
     compile 'com.github.Kennyc1012:BottomSheet:2.3.4'
    compile 'com.facebook.android:facebook-android-sdk:[4,5)'
    compile 'com.android.support:design:26.0.1'
    compile 'com.android.support:cardview-v7:26.0.1'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
    compile 'com.google.android.gms:play-services-identity:11.2.0'
    compile 'com.google.android.gms:play-services-plus:11.2.0'
    compile 'com.google.android.gms:play-services-maps:11.2.0'
    compile 'com.google.code.gson:gson:2.8.1'
    compile 'com.squareup.okhttp:okhttp:2.5.0'
     compile 'de.greenrobot:eventbus:2.4.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.paypal.sdk:paypal-android-sdk:2.14.4'
    compile 'com.koushikdutta.ion:ion:2.1.8'
    compile 'com.afollestad.material-dialogs:core:0.8.6.0'
    compile 'com.amitshekhar.android:android-networking:1.0.0'
    compile 'de.hdodenhof:circleimageview:2.1.0'
    compile 'com.android.support:support-v4:26.0.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    annotationProcessor 'com.github.hotchemi:permissionsdispatcher-processor:2.4.0'
 }

Here's some solutions that I've tried and did not work:

  1. I've added those transitive = true; exclude group: 'com.google.code.gson', module: 'gson' forretrofitandstripe` dependencies

  2. I deleted the gson dependency

  3. I wanted to delete the jar file for gson library but I couldn't find it inside libs folder !?

  4. multiDexEnabled true was already added and did no effect

  5. I've deleted compile fileTree(dir: 'libs', include: ['*.jar'])

I think it has something to do with the Zoom module or with Stripe any help.. !?

like image 837
Alaa AbuZarifa Avatar asked Dec 06 '25 09:12

Alaa AbuZarifa


2 Answers

You could try to get the dependency tree and figure out which package it is.

like image 190
Manuel Avatar answered Dec 07 '25 22:12

Manuel


I figured it out, first.. thanks guys for ur help anyhow..! but I'm making this as the accepted answer since it's the one that worked out for me!


Step 1 I searched for the duplicated class in the whole project using (Double Shift) and it showed me which library is also using the same class..! in my case it was zoommobilertc

Step 2

I tried excluding the gson module of that library like this:

compile project(':zoommobilertc'){
   exclude  group: 'com.google.code.gson', module: 'gson'
}

..but it didn't work, and it give me error that I think it has something to do with exclude . I tried a few solution but no luck!

So.. I did this instead ..

  • Open Project View
  • Open External Libraries
  • Find the library which's zoommobilertc and unfold its folder
  • Delete Gson jar file that shows.!

Step 3

After that, I synced the project and tried to build an apk, bu this error showed:

Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.android.dx.command.Main with arguments {--dex --num-threads=4 --multi-dex --main-dex-list E:\*****\*****\app\build\intermediates\multi-dex\debug\maindexlist.txt --output E:\*****\*****\app\build\intermediates\transforms\dex\debug\folders\1000\1f\main E:\*****\*****\app\build\intermediates\transforms\jarMerging\debug\jars\1\1f\combined.jar}

Then after searching I found a fix:

I added this inside build.gradle file within android section:

android{
//..
 dexOptions {
        javaMaxHeapSize "4g"
    }
//..
}

..and this line inside local.properties file

org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m

Done

like image 41
Alaa AbuZarifa Avatar answered Dec 07 '25 22:12

Alaa AbuZarifa



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!