androidgradle

Circular dependency between the following tasks


I try to solve this problem for more than 5 hours. What could be the problem?

Circular dependency between the following tasks:
:app:checkManifestChangesDevelopDebug
\--- :app:instantRunMainApkResourcesDevelopDebug
     \--- :app:transformClassesAndDexWithShrinkResForDevelopDebug
          \--- :app:transformDexArchiveWithDexMergerForDevelopDebug
               +--- :app:preColdswapDevelopDebug
               |    \--- :app:incrementalDevelopDebugTasks
               |         +--- :app:transformClassesAndClassesEnhancedWithInstantReloadDexForDevelopDebug
               |         |    \--- :app:transformClassesWithInstantRunForDevelopDebug
               |         |         \--- :app:checkManifestChangesDevelopDebug (*)
               |         \--- :app:transformClassesWithInstantRunForDevelopDebug (*)
               \--- :app:transformClassesWithDexBuilderForDevelopDebug
                    +--- :app:preColdswapDevelopDebug (*)
                    \--- :app:transformClassesWithInstantRunForDevelopDebug (*)

(*) - details omitted (listed previously)

I added:

org.gradle.configureondemand=true

But the problem is still present

build.gradle (Module: app)

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'
apply plugin: 'realm-android'


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

static def getFullDate() {
    return new Date().format('dd.MM.yyyy-HH.mm')
}

static def getDate() {
    return new Date().format('dd.MM.yyyy')
}

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion '28.0.2'

    defaultConfig {
        applicationId "com.MYPROJECT"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 47
        versionName "2.11d"
//      project.ext.set("archivesBaseName", "MYPROJECT_" + versionName + "_" + getFullDate())
        project.ext.set("archivesBaseName", "MYPROJECT_" + versionName + "_" + getDate())
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled true

        externalNativeBuild {
            cmake {
                cppFlags "-std=c++11"
            }
        }
    }

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

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    flavorDimensions "app"

    productFlavors {

        prod {
            buildConfigField 'String', 'SERVER_BASE_URL', '"http://MYPROJECT.com/"'
            dimension "app"
        }

        develop {
            buildConfigField 'String', 'SERVER_BASE_URL', '"http://MYPROJECT.com/"'
            buildConfigField 'String', 'YOUTUBE_API_KEY', '"AIzaSyD5eJIAcqUtMkBoorw_K8mh1d_TQSgjRwMT"'
            applicationIdSuffix = ".dev"
            versionNameSuffix = "-dev"
            dimension "app"
        }

    }
    dexOptions {
    }
}


dependencies {
    implementation "com.jakewharton:butterknife:$rootProject.butterKnifeVersion"
    annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.butterKnifeVersion"
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
        transitive = true
    }

    //Google Supports
    implementation "com.android.support:design:$rootProject.supportLibraryVersion"
    implementation "com.android.support:support-v4:$rootProject.supportLibraryVersion"
    implementation "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
    implementation "com.android.support:preference-v7:$rootProject.supportLibraryVersion"

    //Network
    implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion"
    implementation "com.squareup.retrofit2:converter-gson:$rootProject.retrofitVersion"
    implementation "com.squareup.retrofit2:adapter-rxjava2:$rootProject.retrofitVersion"
    implementation "com.squareup.okhttp3:logging-interceptor:$rootProject.okhttpVersion"

    //Constraint layout
    implementation "com.android.support.constraint:constraint-layout:$rootProject.constraintLayoutVersion"

    //Google services
    implementation "com.google.android.gms:play-services-maps:$rootProject.googleServiceVersion"
    implementation "com.google.android.gms:play-services-location:$rootProject.googleServiceVersion"
    implementation "com.google.android.gms:play-services-gcm:$rootProject.googleServiceVersion"

    //RxJava
    implementation "io.reactivex.rxjava2:rxjava:$rootProject.rxjavaVersion"
    implementation "io.reactivex.rxjava2:rxandroid:$rootProject.rxandroidVersion"

    //Lifecycle
    implementation "android.arch.lifecycle:runtime:$project.lifecycleVersion"
    implementation "android.arch.lifecycle:extensions:$project.lifecycleVersion"
    implementation "android.arch.lifecycle:viewmodel:$project.lifecycleVersion"
    annotationProcessor "android.arch.lifecycle:compiler:$project.lifecycleVersion"

    //Dagger dependencies
    implementation "com.google.dagger:dagger:$rootProject.daggerVersion"
    implementation "com.google.dagger:dagger-android:$rootProject.daggerVersion"
    implementation "com.google.dagger:dagger-android-support:$rootProject.daggerVersion"
    annotationProcessor "com.google.dagger:dagger-compiler:$rootProject.daggerVersion"
    annotationProcessor "com.google.dagger:dagger-android-processor:$rootProject.daggerVersion"

    //RxPermissions
    implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'

    //RxBinding
    implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'

    //TIMBER

    //implementation 'com.jakewharton.timber:timber:4.7.0'
    testImplementation "junit:junit:$rootProject.junitVersion"

    //Glide
    implementation "com.github.bumptech.glide:glide:$rootProject.glideVersion"
    annotationProcessor "com.github.bumptech.glide:compiler:$rootProject.glideVersion"
    implementation files('src/main/jniLibs/aacdecoder-android-0.8.jar')

    //Youtube
    implementation files('libs/YouTubeAndroidPlayerApi.jar')

    //Vitamio video player

    //implementation project(':vitamio')

    //VideoPlayer
    implementation 'cn.jzvd:jiaozivideoplayer:6.2.12'
    implementation 'org.greenrobot:eventbus:3.1.1'
    implementation 'com.github.splatte:ViewPagerIndicator:3.0.0'
    implementation 'com.h6ah4i.android.tablayouthelper:tablayouthelper:0.7.0'

    //Rate App
    implementation 'com.github.hotchemi:android-rate:1.0.1'
    implementation 'de.hdodenhof:circleimageview:2.2.0'
    implementation 'com.github.vbartacek:aacdecoder-android:0.8'
    implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever:1.0.11'
    implementation 'com.github.arimorty:floatingsearchview:2.1.1'
    implementation 'jp.wasabeef:glide-transformations:3.2.0'
    implementation 'org.adw.library:discrete-seekbar:1.0.1'
    implementation 'com.android.support:multidex:1.0.3'

    //RouteController
    implementation 'com.ncapdevi:frag-nav:3.0.0-RC3'

    //Joda Time
    implementation 'net.danlew:android.joda:2.9.9.4'

    //ReactLocation
    implementation 'pl.charmas.android:android-reactive-location2:2.1@aar'

    //SeekBar
    implementation 'com.xw.repo:bubbleseekbar:3.16-lite'

    //Lombok

    //Warning! Versions above 1.16.20 do not work with lambda (throws an exception when compiling)
    compileOnly "org.projectlombok:lombok:$rootProject.lombokVersion"
    annotationProcessor "org.projectlombok:lombok:$rootProject.lombokVersion"

    //nv-websocket-client
    implementation "com.neovisionaries:nv-websocket-client:$rootProject.nvWebSocketClientVersion"

    //Custom tabs
    implementation "com.android.support:customtabs:$rootProject.supportLibraryVersion"

    //Auto scroll view pager for Suggestion
    implementation("cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager:$rootProject.autoScrollViewPagerVersion") {
        exclude module: 'support-v4'
    }

    //Paging library
    implementation "android.arch.paging:runtime:$rootProject.pagingLibraryVersion"

    //Beacon Library
    implementation 'org.altbeacon:android-beacon-library:2.15'
}

and build.gradle (Project: myproject)

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
repositories {
    maven { url "http://dl.bintray.com/populov/maven" }
    mavenCentral()
    jcenter()
    google()

    maven {
        url 'https://maven.google.com/'
        name 'Google'
    }
    maven { url "https://jitpack.io" }
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.2.0'
    classpath "io.realm:realm-gradle-plugin:5.1.0"
    classpath 'me.tatarka:gradle-retrolambda:3.7.0'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
} }

allprojects {
repositories {
    maven {
        url 'https://maven.google.com/'
        name 'Google'
    }
    maven { url  "http://dl.bintray.com/populov/maven" }
    mavenCentral()
    jcenter()

    maven { url "https://jitpack.io" }
}
subprojects {
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                    && !details.requested.name.contains('multidex') ) {
                details.useVersion "27.1.1"
            }
        }
    }
} }

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

// Define versions in a single place ext {
// Sdk and tools
minSdkVersion = 19
targetSdkVersion = 27
compileSdkVersion = 27
buildToolsVersion = '27.0.3'

// App dependencies
supportLibraryVersion = '28.0.0'
butterKnifeVersion = '8.8.1'
retrofitVersion = '2.3.0'
okhttpVersion = '3.8.0'
junitVersion = '4.12'
glideVersion = '4.7.1'
googleServiceVersion = '15.0.1'
permissionDispatcherVersion = '3.1.0'
rxjavaVersion = '2.1.12'
rxandroidVersion = '2.0.2'
lifecycleVersion = '1.1.1'
daggerVersion = '2.16'
pagingLibraryVersion = '1.0.1'
autoScrollViewPagerVersion = '1.1.2'
nvWebSocketClientVersion = '2.5'
lombokVersion = '1.16.20'
constraintLayoutVersion = '1.1.3' }

Solution

  • This happens when a module depends on itself!

    For example, suppose this for module app:

    // ...
    dependencies {
        implementation project(':app') // 'app' depends on 'app' !!!
        // ...
    }
    

    Or maybe x module depends on y and y depends on x!

    Or even longer: x -> y -> z -> ... -> x!!