直到最近,我们的Android应用程序只有两个构建类型debug
和release
。我们刚刚添加了一个qa
构建类型,我希望让qa构建类型指向调试源代码,这样我就不必重复代码了。这可能吗?
qa和debug之间的主要区别是Proguard。我们的build.gradle文件如下所示:
productFlavors {
dev {
minSdkVersion 21
}
prod {
minSdkVersion 14
}
}
buildTypes {
debug {
// no proguard
// use debug code
}
qa {
// proguard
// use debug code
}
release {
// proguard
// use release code
}
}
文件结构如下:
src
├── debug
│ ├── assets
│ ├── java
│ └── res
├── main
│ ├── java
│ └── res
├── release
│ ├── assets
│ ├── java
│ └── res
我尝试过使用sourceSets,但似乎不起作用:
sourceSets {
qa {
java.srcDirs = ['src/debug/java']
res.srcDirs = ['src/debug/res']
}
}
我非常接近。我只需要添加android清单文件和资产文件夹的位置。
sourceSets {
qa {
manifest.srcFile 'src/debug/AndroidManifest.xml'
java.srcDirs = ['src/debug/java']
res.srcDirs = ['src/debug/res']
assets.srcDirs = ['src/debug/assets']
}
}
沿着以下几条线的东西应该会让你到达那里:
android {
...
buildTypes {
qa {
minifyEnabled true
}
}
sourceSets {
qa {
java {
srcDirs = ['src/main/java']
}
}
}
...
}
尽管经过进一步检查,这似乎与您上面的示例相同,但我粘贴的格式对我来说确实有效——也许我遗漏了差异,或者可能是其他原因造成的。
你可以随时破解build.gradle并粘贴这样的东西,以确保你的更改生效:
import static groovy.json.JsonOutput.*
println(
prettyPrint(toJson(
android.sourceSets.collectEntries {ss -> [ss.name, ss.java.toString()]}
))
)