Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

KotlinJvmAndroidCompilation with name 'debug' not found

I'm trying to update my project to the last gradle, v6.2.2, but I'm facing the next error:

A problem occurred configuring project ':app'.
> Failed to notify project evaluation listener.
   > Cannot query the value of this provider because it has no value available.
   > KotlinJvmAndroidCompilation with name 'debug' not found.

My project build.gradle is the next:

buildscript {

    ext.gradleToolsVersion = '3.6.1'
    ext.kotlinVersion = "1.3.70"
    ext.googleServicesVersion = "4.3.3"
    ext.butterknifeGradlePluginVersion = "10.2.0"
    ext.fabricToolsGradleVersion = "1.31.2"

    repositories {
        google()
        jcenter()
        mavenCentral()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
        maven {
            url 'https://maven.fabric.io/public'
        }
        maven { url 'https://jitpack.io' }
    }

    dependencies {
        classpath "com.android.tools.build:gradle:3.6.1"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
        classpath "com.google.gms:google-services:$googleServicesVersion" // Google Services plugin
        classpath "com.jakewharton:butterknife-gradle-plugin:$butterknifeGradlePluginVersion"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

        classpath "io.fabric.tools:gradle:$fabricToolsGradleVersion"  // Crashlytics plugin

    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
        maven { url 'https://jitpack.io' }
        maven {
            url "http://dl.bintray.com/electronicid/maven/"
        }
    }
}

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

And my app build is:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'io.fabric'

// Touch Library Versions Here
ext {
    kotlinVersion = "1.3.70"
    androidxAppcompatVersion = '1.1.0'
    corektxAppcompatVersion = '1.2.0'
    fragmentktxAppcompatVersion = '1.2.2'
    androidxVersion = '1.1.0'
    multidexVersion = '2.0.1'
    preferenceVersion = '1.1.0'
    constraintLayoutVersion = '1.1.3'
    retrofitVersion = '2.7.1'
    butterknifeVersion = '10.2.1'
    okHttpVersion = '4.4.0'
    gsonVersion = '2.8.6'
    stethoVersion = '1.5.1'
    rxJavaVersion = '2.2.15'
    rxAndroidVersion = '2.1.1'
    lifecycleVersion = '2.2.0'
    kotlinCoroutineVersion = '1.3.2'
    androidSlidingUpPanelVersion = '4.0.0'
    glideVersion = '4.11.0'
    stickHeaderGridVersion = '0.9.7'
    shimmerLayout = '2.1.0'
    videoidSdkVersion = '5.2.1'
    ottoEventBusVersion = '1.3.8'
    cryptoPrefsVersion = '1.3.2.5'
    blurryVersion = '3.0.0'
    lottieVersion = '3.3.1'
    firebaseCoreVersion = '17.2.3'
    firebaseAnalyticsVersion = '17.2.3'
    firebaseMessagingVersion = '20.1.2'
    firebaseCrashVersion = '16.2.1'
    crashlyticsVersion = '2.10.1'
    circleimageviewVersion = '3.1.0'
    fotoapparatVersion = '2.7.0'
    dexterVersion = '6.0.2'
    ucropVersion = '2.2.4-native'
    commonTextVersion = '1.8'
    guavaVersion = '28.1-android'
    timberVersion = '4.7.1'
    discreteScrollViewVersion = '1.4.9'
    slideUpVersion = '2.2.8'
    biometricVersion = '1.0.1'
    playServicesLocationVersion = '17.0.0'
}

def apikeyPropertiesFile = rootProject.file("apikey.properties")
def apikeyProperties = new Properties()
apikeyProperties.load(new FileInputStream(apikeyPropertiesFile))

def keystorePropertiesFile = rootProject.file("keystore.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))


android {

    compileSdkVersion 29
    buildToolsVersion "29.0.2"

    defaultPublishConfig 'release'
    publishNonDefault true

    defaultConfig {
        applicationId "com.planunnum"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 7084
        versionName '7.4.0'
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled = true

        // SECRET KEY TO ENCRYPT/DECRYPT SHARED PREFERENCES
        buildConfigField("String", "SHA_512_SECURE_KEY", apikeyProperties['SHA_512_SECURE_KEY'])
    }

    signingConfigs {

        release {
            storeFile file(keystoreProperties['RELEASE_STORE_FILE'])
            keyAlias = keystoreProperties['RELEASE_KEY_ALIAS']
            storePassword keystoreProperties['RELEASE_STORE_PASSWORD']
            keyPassword keystoreProperties['RELEASE_KEY_PASSWORD']
        }

    }

    buildTypes {
        debug {
            debuggable true
            minifyEnabled false
            buildConfigField "boolean", "USE_CRASHLYTICS", "true"
            ext.enableCrashlytics = true
            buildConfigField "boolean", "USE_MOCKS", "false"
        }
        release {
            debuggable false
            minifyEnabled true
            proguardFiles getDefaultProguardFile(
                    'proguard-android.txt'),
                    // List additional ProGuard rules for the given build type here. By default,
                    // Android Studio creates and includes an empty rules file for you (located
                    // at the root directory of each module).
                    'proguard-rules.pro'

            signingConfig signingConfigs.release

            // enable crashlytics
            buildConfigField "boolean", "USE_CRASHLYTICS", "true"
            ext.enableCrashlytics = true
            // Disable mocks
            buildConfigField "boolean", "USE_MOCKS", "false"
        }
        mocks {
            debuggable true
            minifyEnabled false

            buildConfigField "boolean", "USE_CRASHLYTICS", "true"
            ext.enableCrashlytics = true // Must be false, but testers are human too :(
            buildConfigField "boolean", "USE_MOCKS", "true"
        }
    }

    // Configure only for each module that uses Java 8
    // language features (either in its source code or
    // through dependencies).
    // Butterknife requires Java 8.
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    // For Kotlin projects
    kotlinOptions {
        jvmTarget = "1.8"
    }

    packagingOptions {
        // exclude ARMEABI native so file, ARMEABI has been removed in NDK r17.
        exclude "lib/armeabi/**"
    }

    // Change behaivour to rename apk deployed
    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            def project = "plannum"
            def SEP = "_"
            def buildType = variant.variantData.variantConfiguration.buildType.name
            def versionCode = variant.versionName
            def buildCode = variant.versionCode
            def date = new Date()
            def formattedDate = date.format('ddMMyy_HHmm')

            def newApkName = project + SEP + buildType + SEP + versionCode + SEP + buildCode + SEP + formattedDate + ".apk"

            outputFileName = new File(newApkName)
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}"
    implementation "org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}"

    // BASE
    implementation "androidx.appcompat:appcompat:${androidxAppcompatVersion}"
    implementation "androidx.core:core:${corektxAppcompatVersion}"
    implementation "androidx.core:core-ktx:${corektxAppcompatVersion}"
    implementation "androidx.fragment:fragment-ktx:${fragmentktxAppcompatVersion}"
    implementation "androidx.constraintlayout:constraintlayout:${constraintLayoutVersion}"
    implementation "androidx.preference:preference-ktx:${preferenceVersion}"
    implementation "androidx.biometric:biometric:${biometricVersion}"
    implementation "androidx.multidex:multidex:${multidexVersion}"


    // TEST
    testImplementation 'junit:junit:4.13'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

    // BUTTERKNIFE
    implementation "com.jakewharton:butterknife:${butterknifeVersion}"
    kapt "com.jakewharton:butterknife-compiler:${butterknifeVersion}"

    // NETWORK
    implementation "com.squareup.retrofit2:retrofit:${retrofitVersion}"
    implementation "com.squareup.retrofit2:converter-scalars:${retrofitVersion}"
    implementation "com.squareup.retrofit2:converter-gson:${retrofitVersion}"
    implementation "com.squareup.okhttp3:okhttp:${okHttpVersion}"
    implementation "com.squareup.okhttp3:logging-interceptor:${okHttpVersion}"
    implementation "com.google.code.gson:gson:${gsonVersion}"
    implementation "com.facebook.stetho:stetho:${stethoVersion}"
    implementation "com.facebook.stetho:stetho-okhttp3:${stethoVersion}"

    // KOTLIN COROUTINES
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlinCoroutineVersion"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinCoroutineVersion"

    // LIFECYCLE VIEWMODEL AND LIVEDATA
    implementation "androidx.lifecycle:lifecycle-extensions:${lifecycleVersion}"
    implementation "androidx.lifecycle:lifecycle-common-java8:${lifecycleVersion}"

    // SLIDING PANELS
    implementation "com.github.mancj:SlideUp-Android:${slideUpVersion}"
    implementation "com.yarolegovich:discrete-scrollview:${discreteScrollViewVersion}"
    implementation "com.github.hannesa2:AndroidSlidingUpPanel:${androidSlidingUpPanelVersion}"
    implementation "com.daimajia.swipelayout:library:1.2.0@aar"

    // IMAGE LOADER
    implementation "com.github.bumptech.glide:glide:${glideVersion}"
    kapt "com.github.bumptech.glide:compiler:${glideVersion}"

    // STICY HEADERS
    implementation "com.codewaves.stickyheadergrid:stickyheadergrid:${stickHeaderGridVersion}"

    // SHIMMER LAYOUTS
    implementation "io.supercharge:shimmerlayout:${shimmerLayout}"

    // VIDEOID
    implementation "eu.electronicid.android:video-sdk:${videoidSdkVersion}"
    implementation "eu.electronicid.android:videoid-sdk:${videoidSdkVersion}"

    // OTTO EVENT BUS
    implementation "com.squareup:otto:${ottoEventBusVersion}"

    // CRYPTOPREFS TO SAVE/LOAD DATA ON SHAREDPREFERENCES
    implementation "com.github.AndreaCioccarelli:CryptoPrefs:${cryptoPrefsVersion}"


    // BLURRY LAYOUTS
    implementation "jp.wasabeef:blurry:${blurryVersion}"

    // LOTTIE FOR LOGO SPLASHSCREEN
    implementation "com.airbnb.android:lottie:${lottieVersion}"

    // FCM
    implementation "com.google.firebase:firebase-core:${firebaseCoreVersion}"
    implementation "com.google.firebase:firebase-analytics:${firebaseAnalyticsVersion}"
    implementation "com.google.firebase:firebase-messaging:${firebaseMessagingVersion}"

    implementation "com.google.firebase:firebase-crash:${firebaseCrashVersion}"
    implementation "com.crashlytics.sdk.android:crashlytics:${crashlyticsVersion}"

    // CIRCLE IMAGE VIEWS
    implementation "de.hdodenhof:circleimageview:${circleimageviewVersion}"

    // CAPTURE PHOTOS
    implementation "io.fotoapparat:fotoapparat:${fotoapparatVersion}"

    // REACTIVE PROGRAMMING RXJAVA & RXANDROID
    implementation "io.reactivex.rxjava2:rxjava:${rxJavaVersion}"
    implementation "io.reactivex.rxjava2:rxandroid:${rxAndroidVersion}"

    // REQUEST PERMISSIONS
    implementation "com.karumi:dexter:${dexterVersion}"

    // CROPPING IMAGES
    implementation "com.github.yalantis:ucrop:${ucropVersion}"

    // COMMONS TEXT UTILS
    implementation "org.apache.commons:commons-text:${commonTextVersion}"

    // GUAVA
    implementation "com.google.guava:guava:${guavaVersion}"

    // BETTER LOG MESSAGES
    implementation "com.jakewharton.timber:timber:${timberVersion}"

    // LOCATION
    implementation "com.google.android.gms:play-services-location:${playServicesLocationVersion}"

    implementation project(path: ':everid-release_2.0')

}

apply plugin: 'com.google.gms.google-services'  // Google Play services Gradle plugin

Any advice please? Thank you

like image 897
Víctor Martín Avatar asked Mar 10 '20 14:03

Víctor Martín


3 Answers

Remove apply plugin: 'io.fabric' help me, but how return crashlytics...

like image 166
Iurii Loskin Avatar answered Nov 15 '22 20:11

Iurii Loskin


I've faced the same issue and it turned out that the cause of the issue is the fabric gradle plugin (crashlytics) rather than gradle itself.

Basically, the issue occurs when setting ext.enableCrashlytics = true in your build.gradle file using io.fabric.tools:gradle:1.31.2 fabric plugin.

Workaround

You have to avoid explicitly setting ext.enableCrashlytics to true (false is okay).

For example, you can replace the following code

def enableCrashlytics = // comes from somewhere
ext.enableCrashlytics = enableCrashlytics

by

def enableCrashlytics = // comes from somewhere
if (!enableCrashlytics) {
    ext.enableCrashlytics = false
}

The behavior remains the same since crashlytics is enabled by default.

As an alternative, you can revert to using 1.31.0 which works fine, but I'd not recommend doing it since the latest version contains a couple of critical bug fixes.

Also, you can consider migrating to Firebase Crashlytics (currently in beta) since Google is dropping support for Fabric soon and this issue might not get fixed.

like image 39
yarikfreerun Avatar answered Nov 15 '22 22:11

yarikfreerun


Fabric is deprecated use Firebase instead. Refer to this page on how to migrate https://firebase.google.com/docs/crashlytics/get-started?platform=android

like image 28
Joshua Achoka Avatar answered Nov 15 '22 22:11

Joshua Achoka