产品风味 + 无法解析“:app@app1521DebugAndroidTest/compileClasspath”的依赖关系:无法解析项目:mylibrary

Posted

技术标签:

【中文标题】产品风味 + 无法解析“:app@app1521DebugAndroidTest/compileClasspath”的依赖关系:无法解析项目:mylibrary【英文标题】:Product Flavors + Unable to resolve dependency for ':app@app1521DebugAndroidTest/compileClasspath': Could not resolve project :mylibrary 【发布时间】:2020-06-21 05:52:37 【问题描述】:

我有这个 sample 项目,它带有 app 模块和 lib(mylibrary) 模块,在使用旧版本 gradle 之前可以正常工作。以下是工作的 gradle 代码副本:

app/build.grale

apply plugin: 'com.android.application'
android 
    buildToolsVersion "24.0.2"

    defaultConfig 
        applicationId "xyz.sahildave.flavoredlibrary"
        versionCode 1
        versionName "1.0"
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    
    productFlavors 
        app1521 
            minSdkVersion 15
            targetSdkVersion 21
            compileSdkVersion 21
            applicationId "xyz.sahildave.flavoredlibrary.app1521"
        
        app1524 
            minSdkVersion 15
            targetSdkVersion 24
            compileSdkVersion 24
            applicationId "xyz.sahildave.flavoredlibrary.app1524"
        
    


configurations 
    app1521DebugCompile
    app1524DebugCompile


dependencies 
    app1521DebugCompile project(path: ':mylibrary', configuration: 'sdk1521Debug')
    app1524DebugCompile project(path: ':mylibrary', configuration: 'sdk1524Debug')
    app1521DebugCompile 'com.android.support:appcompat-v7:21.0.3'
    app1524DebugCompile 'com.android.support:appcompat-v7:24.2.0'

mylibrary/build.gradle

apply plugin: 'com.android.library'

android 
    buildToolsVersion "24.0.2"

    publishNonDefault true

    defaultConfig 
        versionCode 1
        versionName "1.0"
    
    productFlavors 
        sdk1521 
            minSdkVersion 15
            targetSdkVersion 21
            compileSdkVersion 21
        
        sdk1524 
            minSdkVersion 15
            targetSdkVersion 24
            compileSdkVersion 24
        
    


dependencies 
    sdk1524Compile 'com.android.support:appcompat-v7:24.2.1'
    sdk1521Compile 'com.android.support:appcompat-v7:21.0.3'

gradle/wrapper/gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

项目/build.gradle

buildscript 
    ...
    dependencies 
        classpath 'com.android.tools.build:gradle:2.1.3'
    

但是,当我尝试将它们升级到最新的 gradle 版本时,幸福就到此为止了,它报告了下面的问题

ERROR: Unable to resolve dependency for ':app@app1521DebugAndroidTest/compileClasspath': Could not resolve project :mylibrary.
Show Details
Affected Modules: app

这是我的升级代码,我所做的只是

    将所有编译/目标 SDKVersion 升级到 29,minSdkVersion 到 21 添加flavorDimensions('main) 将构建工具版本升级到“29.0.2” 将 gradle 升级到 gradle-5.6.4-all.zip 将 gradle 脚本升级为“classpath 'com.android.tools.build:gradle:3.6.1'”

非常感谢您能帮我解决问题。

app/build.grale

apply plugin: 'com.android.application'

android 
    buildToolsVersion "29.0.2"

    defaultConfig 
        applicationId "xyz.sahildave.flavoredlibrary"
        versionCode 1
        versionName "1.0"
        minSdkVersion 21
        targetSdkVersion 28
        compileSdkVersion 28
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    

    flavorDimensions("main")
    productFlavors 
        app1521 
            dimension "main"
            applicationId "xyz.sahildave.flavoredlibrary.app1521"
        
        app1524 
            dimension "main"
            applicationId "xyz.sahildave.flavoredlibrary.app1524"
        
    


configurations 
    app1521DebugImplementation
    app1524DebugImplementation


dependencies 
    app1521DebugImplementation project(path: ':mylibrary', configuration: 'sdk1521Debug')
    app1524DebugImplementation project(path: ':mylibrary', configuration: 'sdk1524Debug')
    app1521DebugImplementation 'com.android.support:appcompat-v7:21.0.3'
    app1524DebugImplementation 'com.android.support:appcompat-v7:24.2.0'

mylibrary/build.gradle

apply plugin: 'com.android.library'

android 
    buildToolsVersion "29.0.2"

    publishNonDefault true

    defaultConfig 
        versionCode 1
        versionName "1.0"
        minSdkVersion 21
        targetSdkVersion 28
        compileSdkVersion 28
    
    flavorDimensions("main")
    productFlavors 
        sdk1521 
            dimension "main"
        
        sdk1524 
            dimension "main"
        
    


dependencies 
    sdk1524Implementation 'com.android.support:appcompat-v7:24.2.1'
    sdk1521Implementation 'com.android.support:appcompat-v7:21.0.3'

gradle/wrapper/gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

【问题讨论】:

你在这里有什么收获吗? 【参考方案1】:

今天我遇到了与您发布的类似的问题,所以让我们试试这是否可以帮助您。 我仔细检查了你的 gradle 文件并找到了这两个部分。

在您的库 gradle 文件中,产品风味名称为:sdk1521 和 sdk1524。 在您的应用 gradle 文件中,产品风味名称为:app1521 和 app1524。

我猜这导致了 gradle 同步错误。

有两种解决方案。

这个简单的一个统一了应用程序和库的产品风格名称。称它们为 version1521 和 version1524 ,无论如何。只要记住要保持不变。

第二个是更标准和通用的解决方案。在大多数情况下,我们无法将产品风味命名为我们的愿望,尤其是当我们需要使用某些公司的 sdk 时。在这种情况下,你可以添加这个

matchingFallbacks = ["sdk1521"]

更详细的可以看这个问题:Include library with flavors android

希望我的经验可以帮助到你。

祝你好运!

【讨论】:

以上是关于产品风味 + 无法解析“:app@app1521DebugAndroidTest/compileClasspath”的依赖关系:无法解析项目:mylibrary的主要内容,如果未能解决你的问题,请参考以下文章

向我的项目添加风味后,我无法初始化 Flutter for web

Flutter 网页风味

使用 gradle 签署产品风味

添加产品风味以响应本机 android 项目

如何自定义产品风味的 APK 文件名?

产品风味:发现重复的类