Gradle 4.0无法找到匹配的配置

Gak*_*ket 49 android gradle build.gradle android-gradle-plugin

我试图在新的Android Studio 3.0 canary 2中打开我现有的项目.我根据说明更新了Gradle ,更改了依赖配置的名称,但我继续得到下一个错误:

Unable to resolve dependency for ':app@productionRelease/compileClasspath': 
Could not resolve project : abChat.
Run Code Online (Sandbox Code Playgroud)

在另一个窗口:

Error:Could not resolve all dependencies for configuration ':bankOK:betaNewApiInnerTestRuntimeClasspath'.
> Unable to find a matching configuration in project :abChat:
    - Configuration 'debugApiElements':
        - Required apiLvl 'ProductFlavorAttr{name=newApi}' but no value provided.
        - 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=innerTest}' 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 releaseType 'ProductFlavorAttr{name=beta}' but no value provided.
    - Configuration 'debugRuntimeElements':
        - Required apiLvl 'ProductFlavorAttr{name=newApi}' but no value provided.
        - 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=innerTest}' 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 releaseType 'ProductFlavorAttr{name=beta}' but no value provided.
    - Configuration 'releaseApiElements':
        - Required apiLvl 'ProductFlavorAttr{name=newApi}' but no value provided.
        - 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=innerTest}' 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 releaseType 'ProductFlavorAttr{name=beta}' but no value provided.
    - Configuration 'releaseRuntimeElements':
        - Required apiLvl 'ProductFlavorAttr{name=newApi}' but no value provided.
        - 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=innerTest}' 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 releaseType 'ProductFlavorAttr{name=beta}' but no value provided.
Run Code Online (Sandbox Code Playgroud)

以下是我们的构建类型和风格:

buildTypes {

        release {
           //...
        }

        debug {
           //...
        }

        innerTest {
            //...
        }
    }



flavorDimensions "releaseType", "apiLvl"
    productFlavors {
        prod {
            dimension "releaseType"
            //...
        }
        beta {
            dimension "releaseType"
            //...
        }
        oldApi {
            dimension "apiLvl"
           //...
        }
        newApi {
            dimension "apiLvl"
            //...
        }
    }
Run Code Online (Sandbox Code Playgroud)

此外,我们有一个名为"abChat"的库模块,没有任何风味.我可以尝试做些什么来解决这个问题?

Hen*_*nry 55

此问题已得到修复,并且在Stable 3.0版本中一切正常.如果你仍然面临这个问题,那是因为没有回退机制.

如果您的应用程序包含库不存在的构建类型,那么您将收到此错误.要解决此问题,您需要提供matchingFallbacks您的构建类型.请参阅本文档中Resolve build errors related to Dependency matching部分

如果是构建类型,请执行以下操作,如果是产品风格,请参阅文档以进行迁移.

buildTypes {
    release {
       //...
    }
    debug {
       //...
    }
    innerTest {
        //...
        matchingFallbacks = ['debug', 'release']
    }
}
Run Code Online (Sandbox Code Playgroud)

并简单地添加您的依赖项,如下所示:

dependencies {
    implementation project(':abChat')
}
Run Code Online (Sandbox Code Playgroud)

  • 我的项目和库有相同的构建类型,我仍然得到这个错误. (11认同)
  • 任何人都可以确认,这个解决方案有效吗?我改变了我的项目,现在无法检查.如果是,我会将其标记为解决方案. (2认同)

小智 28

这个经过长期的研究后工作.

更换:

implementation project(':abChat')
Run Code Online (Sandbox Code Playgroud)

至:

implementation project(path:':abChat', configuration: 'default')
Run Code Online (Sandbox Code Playgroud)

  • 在我的情况下不起作用,出现此错误 - 无法找到项目的匹配配置:foliolibrary: - 所有消耗性配置都没有属性。 (4认同)
  • 我收到此错误= >>评估项目':app'时发生问题。>在类型org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler的对象上找不到参数[{configuration = default},:swipecardview]的方法project()。@ shivakshi-chaudhary (3认同)
  • 乍一看,这对我不起作用 - 它可以工作,构建运行没有错误,但是当我尝试从库中导入类时,它要求我导入库......似乎库没有导入.. . (3认同)

小智 14

在你的应用程序中

dependencies {
    debugImplementation project(':abChat')
    innerTestImplementation project(':abChat')
    releaseImplementation project(':abChat')
}
Run Code Online (Sandbox Code Playgroud)

在你的libary abChat中

buildTypes {
    release {}
    debug{}
    innerTest{}
}
Run Code Online (Sandbox Code Playgroud)

  • 太棒了 感谢您的代码。知道为什么`implementation project(':abChat')`不起作用吗? (2认同)

Vik*_*Vik 13

确保在所有模块中都有构建配置(buildTypes)确切列表(名称).

在我的3.0之前的设置中,我在所有com.android.library模块中只有debug {}和release {}.我添加了一个类似于app模块的配置.它对我来说很好.

  • 这有效,但你必须这样做很烦人.也希望它在某处记录.像基本上所有gradle问题...严重缺乏文档 (4认同)

Sev*_*ven 5

检查它是否apply plugin: 'com.android.library'在您模块的 build.gradle 中,我刚刚犯了这个愚蠢的错误。