Android Studio 3.0 Compile Issue (Cannot choose between Configurations)

44,064

Solution 1

Error:Cannot choose between the following configurations of project.......

There may be gradle writing problems When I changed to the following wording there is no such error

// compile project(':MPChartLib')

implementation project(':MPChartLib')

Maybe when the reference depends on other modules should be written in this implementation

Solution 2

If you're using the android-apt plugin for annotation processing, try removing that plugin and replacing all of the apt some_dependency references with annotationProcessor some_dependency as suggested in the migration guide for the Android Gradle Plugin 3.0.0.

Solution 3

for AndroidStudio 3.0+, mainMoudle has buildTypes and buildTypes as same as libModule buildTypes and buildTypes ,it would like:

mainModule:

buildTypes {
    release {
        buildConfigField "boolean", "LOG_DEBUG", "false"
        zipAlignEnabled true
        shrinkResources true
        minifyEnabled true
        proguardFiles 'proguard-rules.pro'
    }

    debug {
        buildConfigField "boolean", "LOG_DEBUG", "true"
        zipAlignEnabled true
        shrinkResources false
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

    debug2{

    }
}

libModule:

buildTypes {
    release {

    }

    debug {

    }

    debug2{

    }
}

or you can use matchingFallbacks solve this click

Solution 4

When I updated my project from API level 23 to 27 and Gradle to 3.1 this error comes that

Can not choose between different configuration

So to solve this problem.

replace the

compile project(':your projectName')

with

implementation project(':projectname')

in Gradle, this solves the problem.

Solution 5

For me, run into the same error on Android Studio 3.5.2, with a different cause. I was trying to add an application module as a library.

I resolved it by simply converting the application module to a library module .

Share:
44,064
Ayohaych
Author by

Ayohaych

I suck at programming

Updated on May 26, 2021

Comments

  • Ayohaych
    Ayohaych about 3 years

    Issue with latest 3.0 build (Beta 2) My project has 1 sub module by a 3rd party so I only have access to their build.gradle.

    My project has 3 flavours, snap, uat, production. Each has 2 build types, debug and release. When I try build I get this.

    Error:Cannot choose between the following configurations of project :lp_messaging_sdk:
      - debugApiElements
      - debugRuntimeElements
      - releaseApiElements
      - releaseRuntimeElements
    All of them match the consumer attributes:
      - Configuration 'debugApiElements':
          - Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
          - Found org.gradle.api.attributes.Usage 'java-api' but wasn't required.
      - Configuration 'debugRuntimeElements':
          - Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
          - Found org.gradle.api.attributes.Usage 'java-runtime' but wasn't required.
      - Configuration 'releaseApiElements':
          - Found com.android.build.api.attributes.BuildTypeAttr 'release' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
          - Found org.gradle.api.attributes.Usage 'java-api' but wasn't required.
      - Configuration 'releaseRuntimeElements':
          - Found com.android.build.api.attributes.BuildTypeAttr 'release' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
          - Found org.gradle.api.attributes.Usage 'java-runtime' but wasn't required.
    

    I read there was issues with sub modules and build types but then read it was fixed. You had to add the same build types or something to the sub modules build.gradle and then add

    buildTypeMatching  'debug', 'release'
    

    When I do this however, I get this error,

    Error:Could not select value from candidates [debug, release] using AlternateDisambiguationRule.BuildTypeRule.
    
    apply plugin: 'com.android.application'
    
    android {
    
        repositories {
            flatDir {
                dirs project(':lp_messaging_sdk').file('aars')
            }
        }
    
        // Android parameters
        compileSdkVersion = 26
        buildToolsVersion = '26.0.1'
    
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    
        dexOptions {
            preDexLibraries true
        }
    
        defaultConfig {
            minSdkVersion 19
            versionName buildName
            versionCode buildVersion
            multiDexEnabled true
            resConfigs "en", "fr", "fr-rCA"
        }
    
        signingConfigs {
            release {
    
            }
        }
    
        flavorDimensions "default"
    
        productFlavors {
            snap {
                ext.betaDistributionGroupAliases = "INTERNAL"
                ext.betaDistributionReleaseNotesFilePath = 'changelog.txt'
                ext.betaDistributionNotifications = true
                dimension "default"
            }
    
            uat {
                ext.betaDistributionGroupAliases = "INTERNAL"
                ext.betaDistributionNotifications = true
            }
    
            production {
            }
        }
    
        buildTypes {
            debug {
                versionNameSuffix createVersionNameSuffix()
                applicationIdSuffix '.debug'
                minifyEnabled true
                testCoverageEnabled false
                buildConfigField "String", "PLAY_STORE_VERSION_NAME", '"' + PLAY_STORE_VERSION_NAME + '"'
                // Workaround for : https://code.google.com/p/android/issues/detail?id=212882
                proguardFiles fileTree(dir: 'proguard', include: ['*.pro']).asList().toArray()
                ext.enableCrashlytics = false
            }
    
            release {
                versionNameSuffix createVersionNameSuffix()
                minifyEnabled true
                testCoverageEnabled = false
                signingConfig signingConfigs.release
                buildConfigField "String", "PLAY_STORE_VERSION_NAME", '"' + PLAY_STORE_VERSION_NAME + '"'
                // Workaround for : https://code.google.com/p/android/issues/detail?id=212882
                proguardFiles fileTree(dir: 'proguard', include: ['*.pro']).asList().toArray()
            }
    
        }
    
        //Used to ignore duplicated entries added to meta-inf
        packagingOptions {
            exclude 'LICENSE.txt'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/LICENSE.txt'
            exclude 'META-INF/license'
            exclude 'META-INF/license.txt'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/NOTICE.txt'
            exclude 'META-INF/notice'
            exclude 'META-INF/notice.txt'
            exclude 'META-INF/services/javax.annotation.processing.Processor'
        }
    
        dexOptions {
            javaMaxHeapSize "2048m"
            dexInProcess true
        }
    
        lintOptions {
            abortOnError true
            xmlReport true
            htmlReport true
            disable 'MissingTranslation', 'InvalidPackage'
            disable 'GradleCompatible', 'GradleCompatible'
            disable 'NewApi', 'NewApi'
            disable 'GradleDependency'
            disable 'UnusedResources'
            disable 'IconDensities'
            disable 'TypographyDashes'
            disable 'ContentDescription'
            htmlOutput file("$project.buildDir/reports/lint/lint-result.html")
            xmlOutput file("$project.buildDir/reports/lint/lint-result.xml")
        }
    
        testOptions {
            unitTests.returnDefaultValues = true
        }
    }
    
    greendao {
        schemaVersion 13
        targetGenDir 'src/main/java/'
    }
    
    ext.betaDistributionReleaseNotes = System.getenv("CHANGELOG")
    
    def createVersionNameSuffix() {
        def buildNumber = System.env.BUILD_NUMBER
        def buildTimestamp = new Date().format('HH:mm dd/MM/yy')
        return buildNumber ? " ($buildNumber)" : " ($buildTimestamp)"
    }
    
    def getBuildVersionFromName(String buildName) {
        List data = buildName.tokenize(".")
        String resultString = "19";
    
        for (String s : data) {
            resultString += s;
        }
    
        if (System.env.BUILD_NUMBER) {
            resultString += System.env.BUILD_NUMBER
        }
    
        return Integer.parseInt(resultString);
    }
    
    //Verify the app before creating a Pull Request
    task verifyPR
    verifyPR.dependsOn('clean')
    verifyPR.dependsOn('lint')
    verifyPR.dependsOn('checkstyle')
    verifyPR.dependsOn('pmd')
    verifyPR.dependsOn('testSnapDebugUnitTest')
    
    dependencies {
        // Android Dependencies
        compile 'com.android.support:appcompat-v7:26.0.1'
        compile 'com.android.support:design:26.0.1'
        compile 'com.android.support:recyclerview-v7:26.0.1'
        compile 'com.android.support:multidex:1.0.2'
    
        // Dagger Dependencies
        apt 'com.google.dagger:dagger-compiler:2.11'
        compile 'org.glassfish:javax.annotation:10.0-b28'
        compile 'com.google.dagger:dagger:2.11'
    
        // Rx Dependencies
        compile 'io.reactivex:rxandroid:1.2.1'
        compile 'io.reactivex:rxjava:1.3.0'
        compile 'com.jakewharton.rxbinding:rxbinding-appcompat-v7:0.4.0'
        compile 'com.jakewharton.rxbinding:rxbinding-support-v4:0.4.0'
        compile 'com.squareup.whorlwind:whorlwind:1.0.1'
        compile 'com.tbruyelle.rxpermissions:rxpermissions:0.9.4@aar'
        compile 'com.jenzz:RxAppState:2.0.0'
    
        // Tools
        compile 'com.crashlytics.sdk.android:crashlytics:2.6.5'
    
        // ButterKnife
        compile 'com.jakewharton:butterknife:8.4.0'
    
        // Google Maps
        compile 'com.google.android.gms:play-services-maps:11.0.4'
        compile "com.google.android.gms:play-services-analytics:11.0.4"
        compile 'com.google.android.gms:play-services-location:11.0.4'
        compile 'com.google.android.gms:play-services-places:11.0.4'
        compile 'com.google.android.gms:play-services-gcm:11.0.4'
    
        // Geofence
        compile('pl.charmas.android:android-reactive-location:0.10@aar') {
            transitive = true
        }
    
        // Retrofit
        compile 'com.squareup.retrofit2:retrofit:2.3.0'
        compile 'com.squareup.retrofit2:adapter-rxjava:2.3.0'
    
        // OKHTTP
        compile 'com.squareup.okhttp:okhttp-urlconnection:2.7.5'
    
        // Libphonenumber
        compile 'com.googlecode.libphonenumber:libphonenumber:7.3.2'
    
        // UI
        compile 'com.tubb.smrv:swipemenu-recyclerview:5.0.2'
    
        // EventBus
        compile 'org.greenrobot:eventbus:3.0.0'
    
        // Database
        compile 'org.greenrobot:greendao:3.2.0'
    
        // Chuck HTTP Inspector
        debugCompile 'com.readystatesoftware.chuck:library:1.0.4'
        releaseCompile 'com.readystatesoftware.chuck:library-no-op:1.0.4'
    
        // ViewPager Indicator
        compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
    
        // Amplitude
        compile 'com.amplitude:android-sdk:2.13.2'
    
        // TESTS
        testCompile 'junit:junit:4.12'
        testCompile "org.mockito:mockito-core:1.10.19"
        testCompile "org.powermock:powermock-module-junit4:1.6.5"
        testCompile "org.powermock:powermock-module-junit4-rule:1.6.4"
        testCompile "org.powermock:powermock-api-mockito:1.6.5"
        testCompile "org.powermock:powermock-classloading-xstream:1.6.4"
    
        compile project(':lp_messaging_sdk')
    }
    

    And here is the 3rd party library build.gradle

    apply plugin: 'com.android.library'
    
    android {
        compileSdkVersion 26
        buildToolsVersion "26.0.1"
    
        defaultConfig {
            minSdkVersion 14
            targetSdkVersion 26
            versionCode 250
            versionName "2.5.0"
        }
    
        flavorDimensions "default"
    
        productFlavors {
            snap {
                ext.betaDistributionGroupAliases = "INTERNAL"
                ext.betaDistributionReleaseNotesFilePath = 'changelog.txt'
                ext.betaDistributionNotifications = true
                dimension "default"
            }
    
            uat {
                ext.betaDistributionGroupAliases = "INTERNAL"
                ext.betaDistributionNotifications = true
            }
    
            production {
    
            }
        }
    
        signingConfigs {
            release {
    
            }
        }
    
        buildTypeMatching 'snap', 'debug', 'release'
    
        buildTypes {
            debug {
                applicationIdSuffix '.debug'
                minifyEnabled true
                testCoverageEnabled false
                buildConfigField "String", "PLAY_STORE_VERSION_NAME", '"' + PLAY_STORE_VERSION_NAME + '"'
                // Workaround for : https://code.google.com/p/android/issues/detail?id=212882
                proguardFiles fileTree(dir: 'proguard', include: ['*.pro']).asList().toArray()
                ext.enableCrashlytics = false
            }
    
            release {
                minifyEnabled true
                testCoverageEnabled = false
                signingConfig signingConfigs.release
                buildConfigField "String", "PLAY_STORE_VERSION_NAME", '"' + PLAY_STORE_VERSION_NAME + '"'
                // Workaround for : https://code.google.com/p/android/issues/detail?id=212882
                proguardFiles fileTree(dir: 'proguard', include: ['*.pro']).asList().toArray()
            }
        }
    
        defaultConfig {
            consumerProguardFiles 'proguard.cfg'
        }
    
        repositories {
            flatDir {
                dirs 'aars'
            }
        }
    
        lintOptions {
            disable 'InvalidPackage'
        }
    }
    
    dependencies {
        compile 'com.android.support:appcompat-v7:26.0.1'
        compile 'com.android.support:design:26.0.1'
        compile 'com.android.support:recyclerview-v7:26.0.1'
        compile 'com.android.support:percent:26.0.1'
        compile 'com.android.support.constraint:constraint-layout:1.0.2'
    
        compile 'com.squareup.picasso:picasso:2.5.2'
        compile 'com.neovisionaries:nv-websocket-client:1.31'
        compile 'com.squareup.okhttp3:okhttp:3.8.0'
    
        compile(name: 'infra', ext: 'aar')
        compile(name: 'messaging', ext: 'aar')
        compile(name: 'messaging_ui', ext: 'aar')
        compile(name: 'ui', ext: 'aar')
    }
    

    Does anybody know how I can solve this issue? Thanks

  • bakoyaro
    bakoyaro over 6 years
    Is there anything you can add to your answer to help others decipher it's meaning?
  • Admin
    Admin over 6 years
    and I use the gradle version "4.1" and "4.3" , Can not solve this problem, In addition to changing this wording. but it has a new problem Error:android-apt plugin is incompatible with the Android Gradle plugin. Please use 'annotationProcessor' configuration instead.
  • LordParsley
    LordParsley over 6 years
    See "Migrate dependency configurations for local modules" in developer.android.com/studio/build/….
  • ila
    ila over 6 years
    Awesome solution thanks ! replaces kapt project(:processor) with annotationProcessor project(:processor)