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会自动匹配变体依赖,需要确认变体依赖是否配置正确。
- 检查声明的flavor dimension,app和模块是否声明相同的flavor
- 检查buildTypes,app和模块是否声明了相同的buildType
- 如果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。