当前位置: 首页 > 知识库问答 >
问题:

Android Studio 3 Gradle 4.0 shrinkResources libraryProject=无法在project中找到匹配的配置

杜苏燕
2023-03-14

我在将我的项目迁移到最新的Gradle 4.0 Android Studio 3版本时遇到了一些问题,这给了我各种各样的错误。一点一点地,除了这一个,我设法把它们都分类了。

    Could not resolve all dependencies for configuration ':app:forGoogleCoverageRuntimeClasspath'.
   > Unable to find a matching configuration in project :mylibrary:
       - Configuration 'debugApiElements':
           - 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=coverage}' 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 store 'ProductFlavorAttr{name=forGoogle}' but no value provided.
       - Configuration 'debugRuntimeElements':
           - 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=coverage}' 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 store 'ProductFlavorAttr{name=forGoogle}' but no value provided.
       - Configuration 'releaseApiElements':
           - 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=coverage}' 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 store 'ProductFlavorAttr{name=forGoogle}' but no value provided.
       - Configuration 'releaseRuntimeElements':
           - 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=coverage}' 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 store 'ProductFlavorAttr{name=forGoogle}' but no value provided.

为了解决这个问题:

  1. 我已经从Android Studio project assistant创建了一个最低限度的应用程序项目
  2. 添加了一个空的库模块,然后将其添加到我的应用程序依赖项中
  3. 增加了一种口味和两种产品口味
  4. 添加了3种生成类型,并允许一种生成类型继承另一种生成类型
  5. 让继承的生成类型启用收缩资源

最后一步产生上述错误,类似于此问题:Gradle 4.0无法找到匹配的配置

有人知道这里出了什么问题或者这个问题的解决方案吗?我也会提交一份bug报告。

我的完整gradle文件:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "gradletest.test"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    flavorDimensions "store"

    productFlavors {
        forAmazon {
            dimension "store"
        }

        forGoogle {
            dimension "store"
        }
    }

    buildTypes {

        debug {
            debuggable true
            minifyEnabled false
        }

        release {
            minifyEnabled true
            debuggable false
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

        coverage.initWith(buildTypes.debug)
        coverage {
            testCoverageEnabled true
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


}

dependencies {
    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 "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    compile 'com.android.support:appcompat-v7:25.3.1'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'

    implementation project(':mylibrary')
}

共有3个答案

公羊涛
2023-03-14

Gradle 4.0的可能副本无法找到匹配的配置

请确保在所有模块中具有确切数量的构建配置(构建类型)。

在3.0之前的设置中,我的所有com中只有调试{}和发布{}。Android库模块。我又添加了一个类似于app模块的配置。这对我来说很好。

边翔宇
2023-03-14

如果应用包含库依赖项不包含的生成类型。

例如,您的应用程序包含“暂存”生成类型,但依赖项仅包含“调试”和“发布”生成类型。

您将得到如下错误:

无法解析“”的依赖项:app@staging/compileClasspath':无法解析项目:库。打开文件显示详细信息

您可以通过添加

buildTypes {
        staging {
            proguardFile getDefaultDexGuardFile('dexguard-release.pro')
            proguardFile 'dexguard-rules.pro'
            matchingFallbacks = ['debug', 'release'] //add this line
        }
    }

解决与依赖项匹配的正式文档相关的生成错误

翟宏放
2023-03-14

可能的解决办法是在所有模块中创建缺少构建类型的代码,但当谷歌计划为其创建解决方案时,这会把代码弄得乱七八糟。更多信息请访问:https://issuetracker.google.com/issues/62170415正如我(但被版主删除)和你提到的。

但是还有第二个(相同但更干净)解决方案:将此添加到您的顶级项目build.gradle

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                buildTypes {
                    YOUR_MISSING_BUILD_TYPES {
                       BUILD_TYPE_PARAMS_OR_EMPTY
                    }
                }
            }
        }
    }
}

编辑: 2017-07-12

它最终在classpath'com中修复。Android工具。内部版本:渐变:3.0.0-alpha6'。您可以使用新的DSL:https://issuetracker.google.com/issues/62241369

android {
  buildTypeMatching 'staging', 'debug'
  productFlavorMatching 'color', 'blue', 'cyan'
}

不要忘记在构建项目之前删除上述变通方法

编辑:2017-07-18

有官方文件:https://issuetracker.google.com/issues/62241369

要解决此错误,您需要指定Android插件应与应用程序的“分期”构建类型相匹配的“我的库”构建类型。您可以使用应用程序build.gradle文件中的BuildTypeMatting属性执行此操作,如下所示:

// 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'
}

编辑: 2017-09-06

BuildTypeMatch已从AS beta 4中删除。
现在使用matchingFallback
请参见:https://stackoverflow.com/a/46038946/4594990

 类似资料:
  • 根据以下步骤将Swagger从2.9.2升级到3.0.0: https://springfox.github.io/springfox/docs/snapshot/#migrating-from-existing-2-x-版本 在新版本中,虽然功能工作正常,但点击“/swagger-用户界面/index.html”时,以下错误会打印在日志中。 使用springfox-boot-starter 3.

  • 问题内容: 我正在使用/ 来获取HTTP响应中的响应代码。返回1,但是尝试获取异常!知道为什么吗? 这是代码: 这是输出: 问题答案: 总是会创建一个新的匹配器,因此您需要再次致电。 尝试:

  • 在我的一个程序中,我有以下方法,允许用户在ArrayList中输入与笔记本电脑关联的唯一ID。 所需输出如下: 如果用户输入的ID与ArrayList中的ID匹配,笔记本电脑及其规格将打印出来 如果ID不匹配,它将打印出“无效ID” 我非常接近实现这一目标;然而,我只能弄清楚如何让它打印出是否匹配列表中的每台笔记本电脑。例如,如果用户输入的ID与列表中三台笔记本电脑中的一台匹配,它将按如下方式打印

  • 我知道这是之前提出的问题的重复。但我这辈子都不能让它发挥作用。我已将其添加到路径中。我已经设置了可执行路径。我已经尝试了驱动程序的多个版本。还是相同的错误。想知道是否有人能为我提供他们的python、selenium和geckodriver以及firefox版本?甚至需要firefox吗?我以前让它工作过,就像一年前一样,但现在它不工作了。谢谢 我的版本: 代码: 回溯

  • 问题内容: 我正在尝试执行此查询- 但是我总是会出错 我认为如果用户不存在,则创建新用户。怎么了? 问题答案: 我认为,如果用户不存在,则Grant用法会创建新用户。怎么了? 在以前的mysql版本中就是这种情况。如果您想以新方式进行操作,请参见此答案。如果您想修改系统设置以使其像以前一样工作,请继续阅读。但是,请注意,这是不推荐使用的行为,因为链接文档指出: NO_AUTO_CREATE_USE

  • null 我正在CentOS Linux版本7.3.1611的虚拟环境中使用Python2.7。 我正在运行一个使用matplotlib.pyplot的脚本,运行时会出现以下错误 我试着用- 然后我甚至安装了- 并且它表示包已经安装并且 我已经重新设置了我的虚拟环境,看看我是否错过了什么,但我无法到达任何地方。请救命!