我的应用包含主模块mobile
和库模块core
。它们中的每一个都有两种构建风格:flavor1
和flavor2
。
图书馆build.gradle:
apply plugin: 'com.android.library'
android {
....
publishNonDefault true
productFlavors {
flavor1 {}
flavor2 {}
}
}
项目build.gradle:
apply plugin: 'com.android.application'
android {
....
productFlavors {
flavor1 {}
flavor2 {}
}
}
configurations {
flavor1DebugCompile
flavor2DebugCompile
flavor1ReleaseCompile
flavor2ReleaseCompile
}
dependencies {
....
flavor1DebugCompile project(path: ':core', configuration: 'flavor1Debug')
flavor2DebugCompile project(path: ':core', configuration: 'flavor2Debug')
flavor1ReleaseCompile project(path: ':core', configuration: 'flavor1Release')
flavor2ReleaseCompile project(path: ':core', configuration: 'flavor2Release')
}
现在一切正常并且编译,但我注意到Gradle构建库的方式有些奇怪:
如果我通过gradlew :core:assembleFlavor1Debug
汇编库,它只会编译flavor1
的代码(我看到正在执行的任务core:compileFlavor1DebugJavaWithJavac
)。
但是当我尝试自己构建项目时(或者只是按下'运行'按钮) - gradlew :mobile:assembleFlavor1Debug
我在输出中看到,该库是为两种构建风格构建的,调用{{ 1}}和core:compileFlavor1DebugJavaWithJavac
,甚至认为我专门选择仅构建core:compileFlavor2DebugJavaWithJavac
!
现在,这对我来说真的很奇怪,为什么它只会构建所有口味而不是所需的味道?它是Gradle中的错误还是它处理库的方式?