【问题标题】:Gradle 4.0 Unable to find a matching configurationGradle 4.0 找不到匹配的配置
【发布时间】: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 '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.

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

buildTypes {

        release {
           //...
        }

        debug {
           //...
        }

        innerTest {
            //...
        }
    }



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

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

【问题讨论】:

标签: android gradle android-gradle-plugin build.gradle


【解决方案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 文件,请按照下面提到的方法。

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

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

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

      configurations.maybeCreate("default")
      artifacts.add("default", file('sampleAar.aar'))
      
    4. 在您的应用程序中添加以下行:build.gradle

      implementation project(':sampleAarIntegration')
      
    5. 将以下代码添加到您的 settings.gradle 文件中

      include ':app', ':sampleAarIntegration'
      
    6. 同步项目。您可以看到您的模块已成功集成到您的主项目中。

    【讨论】:

      【解决方案8】:

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

      【讨论】:

        猜你喜欢
        • 2017-10-29
        • 1970-01-01
        • 2016-03-24
        • 2016-01-11
        • 1970-01-01
        • 1970-01-01
        • 2021-03-11
        相关资源
        最近更新 更多