4

I am getting Getting build error: duplicate entry: javax/annotation/CheckForNull.class every time I try to generate a signed apk of my app. I've googled around, tried all the fix I've found and don't know what to do again. Please, help look at my gradle file and see if I've an issue there. Thanks

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: javax/annotation/CheckForNull.class

Below is my gradle file:

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

repositories {
    maven { url 'https://maven.fabric.io/public' }
}

apply plugin: 'realm-android'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'android-apt'

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "co.companyname.theapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "0.0.1"
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled true
    }

    /**
     * This is for jenkins only. Always comment out if not Jenkins
     * */
    lintOptions {
        abortOnError false
    }

    dataBinding {
        enabled = true
    }

    dexOptions {
        javaMaxHeapSize "4g"
        preDexLibraries = false
    }

    signingConfigs {
        debug {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }

        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }

    buildTypes {
        release {
            resValue 'string', 'APP_NAME', '"APP"'
            multiDexEnabled true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            signingConfig signingConfigs.release
            ext.betaDistributionReleaseNotes="Release Notes for this build."
            ext.betaDistributionGroupAliases="Production"
            ext.betaDistributionEmails="soso@soso.co"
            ext.betaDistributionNotifications=true
        }

        debug {
            applicationIdSuffix ".dev"
            versionNameSuffix "-dev"
            resValue 'string', 'APP_NAME', '"APP Dev"'
            multiDexEnabled true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            signingConfig signingConfigs.debug
            ext.betaDistributionReleaseNotes="Bla bla bla"
            ext.betaDistributionGroupAliases="Bla"
            ext.betaDistributionNotifications=true
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    packagingOptions {
        exclude 'META-INF/services/javax.annotation.processing.Processor'
        exclude 'LICENSE'
        exclude 'LICENSE.txt'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    /*Basic Needs The support libraries*/
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support:design:24.2.1'
    compile 'com.android.support:support-v4:24.2.1'
    compile 'com.android.support:cardview-v7:24.2.1'

    /**
     *Reactive Programming for both UI and making request using Reactive Programming
     * */
    compile 'io.reactivex:rxandroid:1.0.1'
    compile 'io.reactivex:rxjava:1.0.14'

    /**
     * Java 8 Stream support for pre Java8
     * */
    compile 'com.annimon:stream:1.0.9'

    /**
     *Retrofit and OKHTTP For making Restful API request
     * */
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
    compile 'com.squareup.okhttp3:okhttp:3.4.1'

    /**
     * Stetho to debug app using Chrome Inspect
     * */
    compile 'com.facebook.stetho:stetho:1.3.1'
    compile 'com.facebook.stetho:stetho-okhttp3:1.3.1'

    /**
     * Afollestad Modified Material Dialog
     * */
    compile 'com.afollestad.material-dialogs:core:0.8.6.2'

    /**
     * Apache common is a collection of reusable components.
     * */
    compile ('org.apache.commons:commons-collections4:4.0') {
        transitive = false
    }
    compile ('org.apache.commons:commons-lang3:3.4') {
        transitive = false
    }
    compile ('commons-io:commons-io:2.4') {
        transitive = false
    }

    /**
     * Joda Time is for managing Time and Date and recent function present in Java 8 but
     * */
    compile 'net.danlew:android.joda:2.9.3.1'

    /**
     * Dependency Injection
    * */
    compile 'com.google.dagger:dagger:2.7'
    compile 'com.google.dagger:dagger-compiler:2.7'

    /**
     * Views invjection
     * */
    compile 'com.jakewharton:butterknife:8.4.0'
    apt 'com.jakewharton:butterknife-compiler:8.4.0'

    /**
     * Image Loading
     * */
    compile 'com.github.bumptech.glide:glide:3.7.0'

    /**
     * Permission helper
     * */
    compile 'com.github.k0shk0sh:PermissionHelper:1.0.9'

    compile 'net.cachapa.expandablelayout:expandablelayout:2.3'

    /**
     * Image Picker
     * */
    compile 'com.github.nguyenhoanglam:ImagePicker:1.1.2'

    /**
     * Pusher
     * */
    compile 'com.pusher:pusher-java-client:1.2.1'
    compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
        transitive = true;
    }
}

retrolambda {
    javaVersion JavaVersion.VERSION_1_7
    defaultMethods false
}

Going through my android studio, I can see two dependencies have CheckForNull.class but then how can I remove it CheckForNull.class

Sanjeet
  • 2,385
  • 1
  • 13
  • 22
Tonespy
  • 3,257
  • 7
  • 26
  • 52

1 Answers1

2

Well, I solved my problem by replacing compile with apt in the dagger compiler dependency

/**
 * Dependency Injection
* */
apt 'com.google.dagger:dagger-compiler:2.7'
compile 'com.google.dagger:dagger:2.7'
provided 'javax.annotation:jsr250-api:1.0'
Tonespy
  • 3,257
  • 7
  • 26
  • 52