webentwicklung-frage-antwort-db.com.de

Android Studio 3.0-Fehler. Migrieren Sie Abhängigkeitskonfigurationen für lokale Module

Ich habe vor kurzem den neuesten Canary Build von Android Studio installiert, der derzeit das Android Gradle Plugin 3.0.0-alpha4 verwendet.

Ich bekomme jetzt einen Fehler:

Error:Failed to resolve: Could not resolve project :MyLib.
Required by:
project :app

Ich habe gelesen: Migrieren von Abhängigkeitskonfigurationen für lokale Module

dependencies 

{

// This is the old method and no longer works for local
// library modules:
// debugCompile project(path: ':foo', configuration: 'debug')
// releaseCompile project(path: ':foo', configuration: 'release')

// Instead, simply use the following to take advantage of
// variant-aware dependency resolution. You can learn more about
// the 'implementation' configuration in the section about
// new dependency configurations.
implementation project(':foo')

// You can, however, keep using variant-specific configurations when
// targeting external dependencies. The following line adds 'app-magic'
// as a dependency to only the 'debug' version of your module.

debugImplementation 'com.example.Android:app-magic:12.3' 
}

Ich habe mich verändert: 

releaseCompile project(path: ':MyLib', configuration: 'appReleaseApp')
debugCompile project(path: ':MyLib', configuration: 'appDebug')

zu:

implementation project(':MyLib')

aber ich habe immer noch diesen Fehler: Error:Failed to resolve: Could not resolve project :MyLib.

lib gradle:

apply plugin: 'com.Android.library'

Android {
    publishNonDefault true
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 25
    }
    buildTypes {
        debug {
            ...
        }
        releaseApp {
            ...
        }
        releaseSdk {
            ...'
        }
    }
    flavorDimensions "default"

    productFlavors {
        flavor1{
            ...
        flavor2{
            ...
        }
        flavor3{
            ...
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.Android.support:appcompat-v7:25.3.1'
    compile 'com.Android.support:support-v4:25.3.1'
    compile 'com.google.code.gson:gson:2.8.0'
    compile 'com.google.Android.gms:play-services-maps:10.2.6'
    compile 'com.google.Android.gms:play-services-gcm:10.2.6'
    compile 'com.google.Android.gms:play-services-location:10.2.6'
}

apply plugin: 'maven'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: mavenLocal().url)
        }
    }
}

app gradle:

apply plugin: 'com.Android.application'

Android {

    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
        minSdkVersion 19
        targetSdkVersion 25
        versionCode 12
        versionName "5.0.2"
    }

    buildTypes {
        release {
            ...
        }
        debug {
            ...
        }
    }
    flavorDimensions "default"

    productFlavors {
        flavor1 {
            ...
        }

        flavor2 {
            ...
        }
    }

    testOptions {
        unitTests {
            all {
                jvmArgs '-noverify'
                systemProperty 'robolectric.logging.enable', true
            }
        }
    }
}

repositories {
    flatDir {
        dirs 'libs'
    }
}
dependencies {
    //    releaseCompile project(path: ':MyLib', configuration: 'appRelease')
    //    debugCompile project(path: ':MyLib', configuration: 'appDebug')
    implementation project(':MyLib')

    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 'com.google.Android.gms:play-services-maps:10.2.6'
    compile 'com.google.Android.gms:play-services-location:10.2.6'
    compile 'com.google.Android.gms:play-services-analytics:10.2.6'
    compile 'com.google.Android.gms:play-services-gcm:10.2.6'
    compile 'com.google.code.gson:gson:2.8.0'
    compile 'com.Android.support:appcompat-v7:25.3.1'
    compile 'com.Android.support:design:25.3.1'
    compile 'com.Android.support:support-v4:25.3.1'
    compile 'com.Android.support:cardview-v7:25.3.1'
    compile 'com.Android.support:gridlayout-v7:25.3.1'
    compile 'com.Android.volley:volley:1.0.0'
    compile 'com.facebook.stetho:stetho:1.4.1'
    compile 'com.facebook.stetho:stetho-okhttp3:1.4.1'
    compile 'com.Android.support:percent:25.3.1'
    compile 'com.Android.support:recyclerview-v7:25.3.1'
    compile 'com.squareup.picasso:picasso:2.5.2'
    testCompile 'junit:junit:4.12'
    testCompile 'org.mockito:mockito-core:2.1.0'
    testCompile 'org.robolectric:robolectric:3.1.4'
    testCompile 'org.assertj:assertj-core:1.7.1'

    compile 'com.flipboard:bottomsheet-core:1.5.0'
    compile 'com.flipboard:bottomsheet-commons:1.5.0'
    compile 'com.Android.support.constraint:constraint-layout:1.0.1'
}

apply plugin: 'com.google.gms.google-services'

Bitte helfen

50
phnmnn

Google fügte weitere Anweisungen hinzu, wie das Problem gelöst werden kann: Erledigt Fehler beim Erstellen von Abhängigkeiten

Ursache des Buildfehlers:

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

Beispielsweise enthält Ihre App einen Buildtyp "Staging", jedoch eine Abhängigkeit enthält nur einen Build-Typ "Debug" und "Release".

Beachten Sie, dass es kein Problem gibt, wenn eine Bibliotheksabhängigkeit einen Build .__ enthält. Geben Sie ein, dass Ihre App dies nicht tut. Das liegt daran, dass das Plugin einfach nie fordert diesen Build-Typ aus der Abhängigkeit an.

Auflösung

Verwenden Sie matchFallbacks, um alternative Übereinstimmungen für einen bestimmten Build-Typ anzugeben (siehe unten):

// In the app's build.gradle file.
Android {
    buildTypes {
        debug {}
        release {}
        staging {
            // Specifies a sorted list of fallback build types that the
            // plugin should try to use when a dependency does not include a
            // "staging" build type. You may specify as many fallbacks as you
            // like, and the plugin selects the first build type that's
            // available in the dependency.
            matchingFallbacks = ['debug', 'qa', 'release']
        }
    }
}
50
phnmnn

Nachdem ich mit demselben Problem konfrontiert war, erklärte ich schließlich genau die gleichen buildTypes in den build.gradle-Dateien von App und Modules.

In Ihrem Fall hinzufügen 

buildTypes {
    debug {}
    releaseApp {}
    releaseSdk {}
}

der build.gradle Ihres Moduls sollte den Trick tun.

Stellen Sie sicher, dass Sie "Kompilierprojekt" auch in "Implementierungsprojekt" ändern.

Ich hoffe es hilft

37
Zoubiock

Mit dem neuen Plugin die variantenbewusste Abhängigkeitsauflösung

implementation project(':MyLib')

muss genau übereinstimmende Build-Typen haben. Der Migrationsleitfaden beschreibt dies

Beispielsweise ist es nicht möglich, eine 'debug'-Variante mit einem .__ zu erstellen. 'Release'-Variante über diesen Mechanismus, da der Produzent und Verbraucher würde nicht übereinstimmen. (In diesem Fall bezieht sich der Name 'debug' auf Das veröffentlichte Konfigurationsobjekt, das oben im Abschnitt Publishing Abhängigkeiten erwähnt wurde.) Nun veröffentlichen wir zwei Konfigurationen, eine für kompilieren und eine für die Laufzeit, diese alte Art der Auswahl einer Konfiguration funktioniert wirklich nicht mehr.

Also die alte Methode von 

releaseCompile project(path: ':foo', configuration: 'debug')

wird nicht mehr funktionieren.

Beispiel

Bei Ihrem Beispiel würde dies so aussehen:

In der App build.gradle:

apply plugin: 'com.Android.application'

Android {
  buildTypes {
    debug {}
    releaseApp {}
    releaseSdk {}
  }
  ...
  dependencies {
    implementation project(':MyLib')
  }
}

In Modul/lib 'MyLib' build.gradle:

apply plugin: 'com.Android.library'

Android {
  buildTypes {
    debug {}
    releaseApp {}
    releaseSdk {}
  }
}

Daher muss der Build-Typ genau übereinstimmen, nicht mehr und nicht weniger.

Build-Typ-Fallbacks verwenden

Eine neue Funktion namens "MatchingFallbacks" kann verwendet werden, um Standard-Buildtypen zu definieren, wenn ein Submodul den Buildtyp nicht definiert. 

Verwenden Sie matchFallbacks, um alternative Übereinstimmungen für einen bestimmten Build-Typ anzugeben (...).

Beispiel: Wenn module/lib 'MyLib' gradle so aussehen würde:

apply plugin: 'com.Android.library'

Android {
  buildTypes {
    debug {}
    releaseLib {}
  }
}

Sie könnten in Ihrer App build.gradle Folgendes definieren:

apply plugin: 'com.Android.application'

Android {
  buildTypes {
    debug {}
    releaseApp {
        ...
        matchingFallbacks = ['releaseLib']
    }
    releaseSdk {
        ...
        matchingFallbacks = ['releaseLib']
    }
  }
  ...
  dependencies {
    implementation project(':MyLib')
  }
}

Fehlende Flavorabmessungen

Verwenden Sie missingDimensionStrategy im Block defaultConfig, um die .__ anzugeben. Standardeinstellung sollte das Plugin aus jeder fehlenden Dimension auswählen

Android {
    defaultConfig {
        missingDimensionStrategy 'minApi', 'minApi18', 'minApi23'
        ...
    }
}
28
patrickf

Diese Lösung hat für mich funktioniert. Ich verwende Android Studio 3.1.2. Android Gradle Plugin 3.1.2. Gradle 4.4. Ich habe ein Bibliotheksmodul mit Flavors wie trial und premium. Im Zuge der Migration zum Android Gradle-Plugin 3.1.2 habe ich der Gradle-Build-Datei meines Bibliotheksmoduls die Flavordimension main hinzugefügt. Um den Build-Fehler zu korrigieren, habe ich in der build.gradle-Datei meiner App Folgendes geändert:

debugImplementation project(path: ':library', configuration: 'premiumDebug')
releaseImplementation project(path: ':library', configuration: 'premiumRelease')

wurden

implementation project(':library')

und ich fügte meinem defaultConfig-Block die folgende Zeile hinzu: missingDimensionStrategy 'main', 'premium'

0
Kai

Heute hatte ich auch das gleiche Problem nach der Migration zu Android Studio 3. Das Problem ist, dass Gradle die bestimmten Bibliotheken aufgrund eines Netzwerkproblems nicht lösen kann. Die Gründe können unterschiedlich sein .. Wenn Sie hinter dem Proxy arbeiten, müssen Sie die Proxy-Parameter in der Datei gradle.properties hinzufügen:

systemProp.http.proxyHost=<proxy_Host>
systemProp.http.proxyPort=<proxy_port
systemProp.https.proxyHost=<proxy_Host>
systemProp.https.proxyPort=<proxy_port>

In meinem Fall hatte ich noch ein Problem. Mein Unternehmen verwendet das selbstsignierte SSL-Zertifikat, sodass bei der SSL-Verbindung ein Problem aufgetreten ist. Wenn dies auch für Sie zutrifft, können Sie den Parameter in der Datei gradle.properties erneut wie folgt einstellen:

org.gradle.jvmargs=-Djavax.net.ssl.trustStore="/usr/lib/jvm/Java-8-Oracle/jre/lib/security/cacerts" -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.keyStorePassword=changeit

Um genauer zu sein, können Sie im Nachrichtenprotokoll in Android Studio auf den Link "Details anzeigen" klicken. Dieses Protokoll ist hilfreicher bei der Entscheidung, welches das eigentliche Problem ist.

0
Adil Aliyev

Ich hatte das gleiche Problem, ich fand diese Migrationsseite: Erstellen Sie passende Typen

Es sagt aus:

Standardeinstellungen für fehlende Build-Typen auswählen
Wenn ein Consumer einen Build-Typ konfiguriert, den ein Produzent nicht konfiguriert, müssen Sie den Build-Typ des Consumers manuell einem Build des Produzenten zuordnen. Wenn Ihr App-Modul beispielsweise einen Build-Typ "Staging" konfiguriert und die Abhängigkeit des Library-Moduls "Mylibrary" nicht, gibt das Android-Plug-In den folgenden Build-Fehler aus:

Error:Failed to resolve: Could not resolve project :mylibrary.
Required by: project :app

Um diesen Fehler zu beheben, müssen Sie angeben, welcher Build-Typ aus "mylibrary" des Android-Plugins mit dem Build-Typ "staging" der App übereinstimmen soll. Sie können dies mit der Eigenschaft buildTypeMatching in der Datei build.gradle der App tun, 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'
}

Durch das Hinzufügen von buildTypeMatching wurde das Problem behoben, ohne dass unnötige Typen in meiner Bibliothek erstellt wurden

0
Kamy