androidgradleduplicateskinvey

Error while generating signed APK: duplicate entry: android/support/v7/util/ThreadUtil$


I've spent countless hours on this, read through tons of SO posts, but can't seem to find a solution. When i generate a signed APK, I keep getting

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

com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v7/util/ThreadUtil$BackgroundCallback.class

I've tried removing different JAR's to see what could be the duplicate, to no avail. The android-support-v7-recyclerview-23.1.1.jarseemed like the culprit to me, so I removed it and didn't get the error anymore. However, instead, I my app starts taking a long time to generate, the CPU usage goes to 350%, then gradle times out with an "OutOfMemory" exception.

This is my build.gradle file.

apply plugin: 'com.android.application'
repositories {
    mavenCentral()
    maven(){
        url "https://oss.sonatype.org/content/repositories/snapshots"
    }
    flatDir {
        dirs 'libs'
    }
}

android {
    compileSdkVersion 25
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.me.myapp"
        minSdkVersion 13
        targetSdkVersion 25
        multiDexEnabled true
    }

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

dependencies {
    compile 'com.android.support:support-v4:25.1.0'
    compile 'com.google.android.gms:play-services-analytics:10.0.1'
    compile 'com.android.support:appcompat-v7:25.1.0'
    compile 'com.google.android.gms:play-services-ads:10.0.1'
    compile 'com.google.android.gms:play-services-location:10.0.1'
    compile files('libs/android-support-v7-recyclerview-23.1.1.jar')
    compile files('libs/applovin-6.3.0.jar')
    compile files('libs/appodeal-1.15.8.jar')
    compile files('libs/chartboost-6.5.1.jar')
    compile files('libs/flurry-analytics-6.5.0.jar')
    compile files('libs/google-http-client-1.19.0.jar')
    compile files('libs/google-http-client-android-1.19.0.jar')
    compile files('libs/google-http-client-gson-1.19.0.jar')
    compile files('libs/google-http-client-jackson2-1.19.0.jar')
    compile files('libs/gson-2.1.jar')
    compile files('libs/guava-18.0.jar')
    compile files('libs/jackson-core-2.1.3.jar')
    compile files('libs/java-api-core-2.10.10.jar')
    compile files('libs/kinvey-android-2.10.10.jar')
    compile files('libs/my-target-4.5.10.jar')
    compile files('libs/unity-ads-2.0.4.jar')
    compile files('libs/yandex-metrica-2.51.jar')
    compile project(':cheetah-mobile-3.4.7')
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.github.dexafree:materiallist:3.2.1'
    compile 'jp.wasabeef:recyclerview-animators:2.0.1'
    compile ('com.github.worker8:tourguide:1.0.17-SNAPSHOT@aar'){
        transitive=true
    }
}
apply plugin: 'com.google.gms.google-services'

Thank you in advance!


Solution

  • I'm so happy! It's finally fixed!

    I removed the 'libs/android-support-v7-recyclerview-23.1.1.jar' from my gradle and added the lines below in the "android" enclosing of my build.gradle.

    dexOptions { 
        javaMaxHeapSize "4g" 
    }
    

    I got the answer from this post on SO.