Gradle 4.0 找不到匹配的配置

Posted

技术标签:

【中文标题】Gradle 4.0 找不到匹配的配置【英文标题】:Gradle 4.0 Unable to find a matching configuration 【发布时间】:2017-10-28 08:28:59 【问题描述】:

我正在尝试在新的 android Studio 3.0 canary 2 中打开我现有的项目。我根据 instructions 更新了 Gradle,更改了依赖配置的名称,但我继续收到下一个错误:

Unable to resolve dependency for ':app@productionRelease/compileClasspath': 
Could not resolve project : abChat.

在另一个窗口中:

Error:Could not resolve all dependencies for configuration ':bankOK:betaNewApiInnerTestRuntimeClasspath'.
> Unable to find a matching configuration in project :abChat:
    - Configuration 'debugApiElements':
        - Required apiLvl 'ProductFlavorAttrname=newApi' but no value provided.
        - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttrname=Aar' and found compatible value 'AndroidTypeAttrname=Aar'.
        - Required com.android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttrname=innerTest' and found incompatible value 'BuildTypeAttrname=debug'.
        - Found com.android.build.gradle.internal.dependency.VariantAttr 'VariantAttrname=debug' but wasn't required.
        - Required org.gradle.api.attributes.Usage 'for runtime' and found incompatible value 'for compile'.
        - Required releaseType 'ProductFlavorAttrname=beta' but no value provided.
    - Configuration 'debugRuntimeElements':
        - Required apiLvl 'ProductFlavorAttrname=newApi' but no value provided.
        - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttrname=Aar' and found compatible value 'AndroidTypeAttrname=Aar'.
        - Required com.android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttrname=innerTest' and found incompatible value 'BuildTypeAttrname=debug'.
        - Found com.android.build.gradle.internal.dependency.VariantAttr 'VariantAttrname=debug' but wasn't required.
        - Required org.gradle.api.attributes.Usage 'for runtime' and found compatible value 'for runtime'.
        - Required releaseType 'ProductFlavorAttrname=beta' but no value provided.
    - Configuration 'releaseApiElements':
        - Required apiLvl 'ProductFlavorAttrname=newApi' but no value provided.
        - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttrname=Aar' and found compatible value 'AndroidTypeAttrname=Aar'.
        - Required com.android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttrname=innerTest' and found incompatible value 'BuildTypeAttrname=release'.
        - Found com.android.build.gradle.internal.dependency.VariantAttr 'VariantAttrname=release' but wasn't required.
        - Required org.gradle.api.attributes.Usage 'for runtime' and found incompatible value 'for compile'.
        - Required releaseType 'ProductFlavorAttrname=beta' but no value provided.
    - Configuration 'releaseRuntimeElements':
        - Required apiLvl 'ProductFlavorAttrname=newApi' but no value provided.
        - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'AndroidTypeAttrname=Aar' and found compatible value 'AndroidTypeAttrname=Aar'.
        - Required com.android.build.gradle.internal.dependency.BuildTypeAttr 'BuildTypeAttrname=innerTest' and found incompatible value 'BuildTypeAttrname=release'.
        - Found com.android.build.gradle.internal.dependency.VariantAttr 'VariantAttrname=release' but wasn't required.
        - Required org.gradle.api.attributes.Usage 'for runtime' and found compatible value 'for runtime'.
        - Required releaseType 'ProductFlavorAttrname=beta' but no value provided.

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

buildTypes 

        release 
           //...
        

        debug 
           //...
        

        innerTest 
            //...
        
    



flavorDimensions "releaseType", "apiLvl"
    productFlavors 
        prod 
            dimension "releaseType"
            //...
        
        beta 
            dimension "releaseType"
            //...
        
        oldApi 
            dimension "apiLvl"
           //...
        
        newApi 
            dimension "apiLvl"
            //...
        
    

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

【问题讨论】:

kotlin + 数据绑定也有同样的问题 所以请投票/加星:issuetracker.google.com/issues/62170415 【参考方案1】:

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

如果您的应用包含库不包含的构建类型,那么您将收到此错误。要解决此问题,您需要为您的构建类型提供 matchingFallbacks。参考Resolve build errors related to Dependency matching部分in this documentation

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

buildTypes 
    release 
       //...
    
    debug 
       //...
    
    innerTest 
        //...
        matchingFallbacks = ['debug', 'release']
    

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

dependencies 
    implementation project(':abChat')

【讨论】:

有人可以确认,这个解决方案有效吗?我更改了我的项目,现在无法检查。如果是,我会将其标记为解决方案。 我的项目和库具有相同的构建类型,但我仍然收到此错误。 “com.google.gms:google-services:3.3.1”仍然存在这个问题【参考方案2】:

This 经过长时间的研究工作。

替换:

implementation project(':abChat')

收件人:

implementation project(path:':abChat', configuration: 'default')

【讨论】:

我收到此错误 =>> 评估项目 ':app' 时出现问题。 > 在 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 类型的对象上找不到参数 [configuration=default, :swipecardview] 的方法 project()。 @shivakshi-chaudhary 乍一看,这对我不起作用 - 它有效,构建运行没有错误,但是当我尝试从库中导入类时,它要求我导入库......它似乎没有导入库... 但是我应该在哪个文件中进行此更改? 自从 android build tools 3.5.x 对我来说这不再起作用了。有谁知道 3.5.x 中发生了什么变化以及如何再次修复它? 在我的情况下不起作用,出现此错误 - 无法找到项目的匹配配置:foliolibrary: - 消耗品配置都没有属性。【参考方案3】:

在您的应用中

dependencies 
    debugImplementation project(':abChat')
    innerTestImplementation project(':abChat')
    releaseImplementation project(':abChat')

在你的库 abChat 中

buildTypes 
    release 
    debug
    innerTest

【讨论】:

太棒了。感谢您的代码。知道为什么 implementation project(':abChat') 不起作用吗? 正确答案。我在这个问题上被困了好几个小时。 这也解决了我的问题,使用 gradle 4 有没有办法重复3次?谢谢!【参考方案4】:

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

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

【讨论】:

它不取决于 buildTypes 的数量,而是取决于名称(模块中缺少 buildTypes)。当然,当您将相同的类型放入所有模块时,它会起作用......但这不是解决方案。解决方案将是 Google 修复:issuetracker.google.com/issues/62170415#comment12 变体 4。 这就是我的意思。我已经编辑显示“确切名称”而不是“确切数字” 这行得通,但很烦人,你必须这样做。也希望它被记录在某个地方。基本上像所有 gradle 问题...严重缺乏文档 谢谢大家,它帮助解决了我遇到的问题。我的应用程序模块中有 3 种构建类型。当我构建我的“新”模块时,它会开始抛出错误,因为它在我的应用程序模块中没有构建类型。我已将它们放入“新”模块中,并且效果很好。但这不是一个好的解决方法,对吧? Like 模块应该对它的应用模块有 0 依赖?【参考方案5】:

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

【讨论】:

谢谢,但这不是我们的问题。接受的答案解决了它。 谢谢你,这拯救了我的一天。我在 build.gradle 中导入了一个使用“应用插件:'com.android.application”的项目,同步失败。将其更改为“com.android.library”,它就像一个魅力。【参考方案6】:

build.gradle 中删除这个旧配置清除了错误

androidExtensions 
  experimental = true

【讨论】:

【参考方案7】:

另一种可能的解决方案是创建模块项目的 build.gradle 文件。要在您现有的项目中集成 .aar 文件,请按照下面提到的方法。

    在您的项目中创建一个文件夹。将其命名为 sampleAarIntegration,位于您的“app”文件夹可用的同一位置。

    将您的 sampleAar.aar 文件粘贴到 sampleAarIntegration 文件夹中

    在 sampleAarIntegration 文件夹中创建 gradle 文件。将其命名为“build.gradle”。 将以下代码粘贴到 sampleAarIntegration:build.gradle 文件中

    configurations.maybeCreate("default")
    artifacts.add("default", file('sampleAar.aar'))
    

    在您的应用程序中添加以下行:build.gradle

    implementation project(':sampleAarIntegration')
    

    将以下代码添加到您的 settings.gradle 文件中

    include ':app', ':sampleAarIntegration'
    

    同步项目。您可以看到您的模块已成功集成到您的主项目中。

【讨论】:

【参考方案8】:

在以管理员身份运行中运行您的 Android Studio 这对我有用.. 这将轻松解决您的问题

【讨论】:

以上是关于Gradle 4.0 找不到匹配的配置的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 错误:找不到任何匹配 com.android.tools.build:gradle:2.2.+ [重复]

没有 Gradle - 找不到与给定名称匹配的资源(在“值”处,值为“@integer/google_play_services_version”)

Android Studio:找不到匹配项,因为没有com.android.tools.build:gradle版本可用

Android Studio 更新 0.4.0 找不到 buildConfig()

找不到gradle颤动

IDEA中Gradle构建失败找不到类路径的解决方法!