我正在尝试将我的AS升级到最新的beta2,并遇到我的app
和lib
模块的以下问题。
在我的app
build.gradle
我有两种口味
flavorDimensions "default"
productFlavors {
stage {
applicationId "com.mycompany.hello.stage"
resValue "string", "app_name", "Stage"
}
production {
applicationId "com.mycompany.hello.stage.production"
resValue "string", "app_name", "Live"
}
}
我指定该应用仅与我lib
的特定类型进行对话,如下所示:
stageCompile project(path: ':lib', configuration: 'debug')
productionCompile project(path: ':lib', configuration: 'release')
lib
build.gradle
文件我只有构建类型而没有调整块
publishNonDefault true
buildTypes {
debug {
versionNameSuffix ".debug"
}
release {
versionNameSuffix ".release"
minifyEnabled true
}
}
以上代码我最了解app
将取决于构建变体并与lib
的特定构建变体进行对话。它完美运行,直到我升级到AS 3.0。
这里是gradle错误消息...我不确定这是否是由我的两个gradle文件中的flavorDimensions
不匹配引起的。
Error:Could not determine the dependencies of task ':app:compileStageDebugAidl'.
> Could not resolve all task dependencies for configuration ':app:stageDebugCompileClasspath'.
> Could not resolve project :lib.
Required by project :app
> Project :app declares a dependency from configuration 'stageCompile' to configuration 'debug' which is not declared in the descriptor for project :lib.
答案 0 :(得分:0)
所以我花了几个小时来迁移我的项目以匹配我Android Studio提供的迁移指南。
我最终做了以下更改以实现我想要的目标:
app
变体productionRelease
应调用lib
release
app
变体stageDebug
应调用lib
debug
app build.gradle文件
flavorDimensions "default" //add this line for flavorDimensions
productFlavors {
stage {
...
}
production {
...
}
}
implementation project(':lib')
在我的lib build.gradle中,我保持不变
publishNonDefault true
buildTypes {
debug {
versionNameSuffix ".debug"
}
release {
versionNameSuffix ".release"
minifyEnabled true
}
}
我在这里唯一的问题是忽略某些我不想实现的生产版本(app)+发布(lib)和stageDebug(app)+ debug(lib)组合。
//通过这种方式,我只会在AS面板中留下productionRelease
和stageDebug
变体。
在app build.gradle中
variantFilter { variant ->
def names = variant.flavors*.name
if (names.contains("stage") && variant.buildType.name == "release") {
variant.ignore = true
}
if (names.contains("production") && variant.buildType.name == "debug") {
variant.ignore = true
}
}
当我切换app
的构建变体时,它也会将我的lib
切换为相应的构建类型。
我仍然不确定这是否是最佳做法。如果你们找到一个更好的方法来做到这一点。请告诉我。