Android Studio 3.0解决本地模块依赖错误:Error:Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve project :library.

时间:2022-06-01 18:43:08

Android Studio 3.0使用了新的依赖管理机制,它会自动匹配变体的依赖。

在依赖本地模块时可能会报类似下面的错误:

Error:Unable to resolve dependency for ':app@debug/compileClasspath':
  Could not resolve project :library.
Error:Unable to resolve dependency for ':app@release/compileClasspath':
  Could not resolve project :library.

一、检查基本配置

首先要确认Android Studio 3.0 Gradle插件的基本配置

gradle-wrapper.properties

distributionUrl=\
  https\://services.gradle.org/distributions/gradle-4.1-all.zip

project层级build.gradle

buildscript {
    repositories {
        google()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
    }
}

二、检查变体依赖

因为Gradle会自动匹配变体依赖,需要确认变体依赖是否配置正确。

  1. 检查声明的flavor dimension,app和模块是否声明相同的flavor
  2. 检查buildTypes,app和模块是否声明了相同的buildType
  3. 如果flavor或buildType存在不一致时,是否添加了matchingFallbacks指定匹配失败时匹配其他变体

app的build.gradle

android {
    buildTypes {
        debug {}
        release {}
        staging {
           //指定匹配失败匹配其他变体
            matchingFallbacks = ['debug', 'qa', 'release']
        }
    }
}

三、检查依赖配置

新的依赖管理不需要为本地模块(local module)指定特定的变体。

旧的依赖配置:

dependencies {    
    debugImplementation project(path: ':library', configuration: 'debug')
    releaseImplementation project(path: ':library', configuration: 'release')
}

使用如configuration:"debug"指定特定的变体会导致上述错误。

新的配置如下:

dependencies {
    implementation project(':library')
    debugImplementation 'com.example.android:app-magic:12.3'
}

我们还是可以使用debugImplementation这样的变体声明外部依赖的Jar包,本地依赖使用implementation。