webentwicklung-frage-antwort-db.com.de

Android Studio 3 + Gradle 4.0 + shrinkResources + libraryProject = Konnte keine passende Konfiguration im Projekt finden

Ich habe Probleme, mein Projekt auf die neueste Version von Gradle 4.0 + Android Studio 3 zu migrieren, was zu Fehlern in allen Bereichen führt. Nach und nach gelang es mir, sie alle außer diesem zu sortieren.

    Could not resolve all dependencies for configuration ':app:forGoogleCoverageRuntimeClasspath'.
   > Unable to find a matching configuration in project :mylibrary:
       - Configuration 'debugApiElements':
           - Required com.Android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttr{name=Aar}' and found compatible value 'AndroidTypeAttr{name=Aar}'.
           - Required com.Android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttr{name=coverage}' and found incompatible value 'BuildTypeAttr{name=debug}'.
           - Found com.Android.build.gradle.internal.dependency.VariantAttr 'VariantAttr{name=debug}' but wasn't required.
           - Required org.gradle.api.attributes.Usage 'for runtime' and found incompatible value 'for compile'.
           - Required store 'ProductFlavorAttr{name=forGoogle}' but no value provided.
       - Configuration 'debugRuntimeElements':
           - Required com.Android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttr{name=Aar}' and found compatible value 'AndroidTypeAttr{name=Aar}'.
           - Required com.Android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttr{name=coverage}' and found incompatible value 'BuildTypeAttr{name=debug}'.
           - Found com.Android.build.gradle.internal.dependency.VariantAttr 'VariantAttr{name=debug}' but wasn't required.
           - Required org.gradle.api.attributes.Usage 'for runtime' and found compatible value 'for runtime'.
           - Required store 'ProductFlavorAttr{name=forGoogle}' but no value provided.
       - Configuration 'releaseApiElements':
           - Required com.Android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttr{name=Aar}' and found compatible value 'AndroidTypeAttr{name=Aar}'.
           - Required com.Android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttr{name=coverage}' and found incompatible value 'BuildTypeAttr{name=release}'.
           - Found com.Android.build.gradle.internal.dependency.VariantAttr 'VariantAttr{name=release}' but wasn't required.
           - Required org.gradle.api.attributes.Usage 'for runtime' and found incompatible value 'for compile'.
           - Required store 'ProductFlavorAttr{name=forGoogle}' but no value provided.
       - Configuration 'releaseRuntimeElements':
           - Required com.Android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttr{name=Aar}' and found compatible value 'AndroidTypeAttr{name=Aar}'.
           - Required com.Android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttr{name=coverage}' and found incompatible value 'BuildTypeAttr{name=release}'.
           - Found com.Android.build.gradle.internal.dependency.VariantAttr 'VariantAttr{name=release}' but wasn't required.
           - Required org.gradle.api.attributes.Usage 'for runtime' and found compatible value 'for runtime'.
           - Required store 'ProductFlavorAttr{name=forGoogle}' but no value provided.

Um das Problem auf den Punkt zu bringen:

  1. Ich habe ein Minimum-App-Projekt vom Android Studios-Projektassistenten erstellt 
  2. fügte ein leeres Bibliotheksmodul hinzu, das ich dann zu meinen App-Abhängigkeiten hinzufügte.
  3. fügte eine FlavourDimensions und 2 productFlavors hinzu
  4. 3 Build-Typen hinzugefügt und ein Build-Typ von einem anderen erben lassen
  5. lass den geerbten Build-Typ shrinkResources aktivieren

Der letzte Schritt führt zu dem erwähnten Fehler, der dieser Frage ähnelt: Gradle 4.0 Konnte keine passende Konfiguration finden

Hat jemand eine Idee, was hier los ist, oder eine Lösung für dieses Problem? Ich werde auch einen Fehlerbericht einreichen.

Meine komplette Gradle-Datei:

apply plugin: 'com.Android.application'

apply plugin: 'kotlin-Android'

Android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "gradletest.test"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }

    flavorDimensions "store"

    productFlavors {
        forAmazon {
            dimension "store"
        }

        forGoogle {
            dimension "store"
        }
    }

    buildTypes {

        debug {
            debuggable true
            minifyEnabled false
        }

        release {
            minifyEnabled true
            debuggable false
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }

        coverage.initWith(buildTypes.debug)
        coverage {
            testCoverageEnabled true
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }


}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.Android.support', module: 'support-annotations'
    })
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    compile 'com.Android.support:appcompat-v7:25.3.1'
    testCompile 'junit:junit:4.12'
    compile 'com.Android.support.constraint:constraint-layout:1.0.2'

    implementation project(':mylibrary')
}
10
JimVanB

Eine mögliche Problemumgehung besteht darin, dass in allen Modulen buildTypes fehlen, aber es ist verrückter Code, wenn Google eine Lösung dafür erstellen will. Weitere Informationen finden Sie unter: https://issuetracker.google.com/issues/62170415 wie ich (aber vom Moderator gelöscht) und Sie erwähnen.

Es gibt jedoch eine zweite (gleiche, aber viel sauberere) Lösung: Fügen Sie dies zu Ihrem Top-Projekt hinzu build.gradle

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("Android")) {
            Android {
                buildTypes {
                    YOUR_MISSING_BUILD_TYPES {
                       BUILD_TYPE_PARAMS_OR_EMPTY
                    }
                }
            }
        }
    }
}

EDIT: 2017-07-12

Es ist endlich behoben in classpath 'com.Android.tools.build:gradle:3.0.0-alpha6'. Sie können neues DSL verwenden: https://issuetracker.google.com/issues/62241369

Android {
  buildTypeMatching 'staging', 'debug'
  productFlavorMatching 'color', 'blue', 'cyan'
}

Vergessen Sie nicht, die obige Problemumgehung vor dem Build-Projekt zu entfernen!

EDIT: 2017-07-18

Es gibt offizielle Unterlagen: https://issuetracker.google.com/issues/62241369

Um diesen Fehler zu beheben, müssen Sie angeben, von welchem ​​Build-Typ aus "mylibrary" sollte das Android-Plugin mit der "Inszenierung" der App übereinstimmen Bauart. Sie können dies mit der buildTypeMatching -Eigenschaft in .__ tun. build.gradle -Datei der App, wie unten gezeigt:

// Add the following to the consumer's build.gradle file.
Android {
    ...
    // Tells the Android plugin to use a library's 'debug' build type
    // when a 'staging' build type is not available. You can include
    // additional build types, and the plugin matches 'staging' to the
    // first build type it finds from the one's you specify. That is,
    // if 'mylibrary' doesn't include a 'debug' build type either, the
    // plugin matches 'staging' with the producer's 'release' build type.
    buildTypeMatching 'staging', 'debug', 'release'
}

EDIT: 2017-09-06

buildTypeMatching wurde aus AS Beta 4 entfernt.
benutze jetzt matchingFallbacks.
siehe: https://stackoverflow.com/a/46038946/4594990

7
mtrakal

WENN Ihre App einen Build-Typ enthält, den eine Bibliotheksabhängigkeit nicht bietet.

Ihre App enthält beispielsweise einen Buildtyp "Staging", eine Abhängigkeit jedoch nur einen Buildtyp "Debug" und "Release".

Sie erhalten Fehler wie 

Unable to resolve dependency for ':[email protected]/compileClasspath': Could not resolve project :library. Open File Show Details

Sie können diesen Fehler durch Hinzufügen beheben 

buildTypes {
        staging {
            proguardFile getDefaultDexGuardFile('dexguard-release.pro')
            proguardFile 'dexguard-rules.pro'
            matchingFallbacks = ['debug', 'release'] //add this line
        }
    }

Beheben von Buildfehlern im Zusammenhang mit Abhängigkeitsabgleich offizielle Dokumente

3
Qamar4P

Mögliches Duplikat von Gradle 4.0 Es wurde keine passende Konfiguration gefunden.

Stellen Sie sicher, dass Sie genaue Anzahl der Build-Konfigurationen (buildTypes) in allen Ihren Modulen haben.

In meinem Setup vor Version 3.0 hatte ich in allen Modulen von com.Android.library nur debug {} und release {}. Ich habe eine weitere Konfiguration hinzugefügt, die der von App-Modul ähnelt. Es ist gut für mich gebaut.

0
Vik