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版本可用