以下是风味的工作原理:https://proandroiddev.com/advanced-android-flavors-part-1-building-white-label-apps-on-android-ade16af23bcf https://proandroiddev.com/advanced-android-flavors-part-1-building-white-label-apps-on-android-ade16af23bcf
-> 在您的 src 文件夹中,您想要创建 2 种口味,称为“红色”、“蓝色”。
-> 在 src 中创建 2 个名为“red”、“blue”的文件夹(与 main 同一级别)。
-> 文件夹具有与 main 相同的结构。
-> 在这里您可以选择覆盖任何 XML/资源/java 文件/值等。
->(当您构建 Flavor 时,与 main 具有相同名称的资源将被覆盖)。
-> 使用 build.gradle 中的示例代码为项目添加风味。
productFlavors {
blue{
minSdkVersion 21
applicationId 'something'
targetSdkVersion 28
versionCode 1
versionName "1.0.0"
}
red
{
minSdkVersion 21
applicationId 'something'
targetSdkVersion 28
versionCode 1
versionName '1.0.0'
}
}
buildTypes {
Debug { }
Release { }
}
将给出构建变体:
blueDebug
blueRelease
redDebug
redRelease
//================ 添加子口味 ================
Here: https://proandroiddev.com/advanced-android-flavors-part-2-enter-flavor-dimensions-4ad7f486f6 https://proandroiddev.com/advanced-android-flavors-part-2-enter-flavor-dimensions-4ad7f486f6
-> 具有简单、复杂等子风格(换句话说“buildTypes”)。
-> 对于子风味或构建类型,我们使用维度。
->flavorDimensions“Flavour”、“SubFlavour”(在您的 build.gradle 中)
// 可以是任意关键字,内部使用
// 将此关键字视为将口味集合定义为一个组的组 ID。
-> 根据您的口味使用它
-> 我们可以认为关键词“维度”更像是定义一组风味和子风味
flavorDimensions "Flavour", "SubFlavour"
productFlavors
{
// group one
Simple {
dimension "SubFlavour"
}
Complex {
dimension "SubFlavour"
}
//group two
// Take a note: do not use upper case in your flavours (one which match the folder names in src)
// Sub-Flavours can have Upper case
blue
{
dimension "Flavour"
minSdkVersion 21
applicationId 'something'
targetSdkVersion 28
versionCode 1
versionName "1.0.0"
}
red
{
dimension "Flavour"
minSdkVersion 21
applicationId 'something'
targetSdkVersion 28
versionCode 1
versionName '1.0.0'
}
}
--> 通过正确配置,您将看到下面的 buildVariants。
blueSimpleDebug
blueSimpleRelease
blueComplexDebug
blueComplexRelease
redSimpleDebug
redSimpleRelease
redComplexDebug
redComplexRelease
//================= build.gradle ===============
// 这里你的 build.gradle 可能看起来像这样。
android {
buildTypes {
debug { }
release { }
// Any other you want to add here
// Ex, development {}
}
flavorDimensions "Flavour", "SubFlavour"
productFlavors {
Simple {
dimension "SubFlavour"
}
Complex {
dimension "SubFlavour"
}
Blue
{
dimension "Flavour"
minSdkVersion 21
applicationId 'something'
targetSdkVersion 28
versionCode 1
versionName "1.0.0"
}
Red
{
dimension "Flavour"
minSdkVersion 21
applicationId 'something'
targetSdkVersion 28
versionCode 1
versionName '1.0.0'
}
}
sourceSets {
main {
aidl.srcDirs = ['src/main/aidl', 'src/main/res/animation', 'src/main/res/animations']
res.srcDirs = [
'src/main/res/anim',
'src/main/res/layouts/xyz',
'src/main/res/layouts/abc',
'src/main/res/layouts',
'src/main/res/layout',
'src/main/res'
]
resources.srcDirs = ['src/main/resources', 'src/main/resources/xml']
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java']
}
red {
java.srcDirs = ['src/red/java']
res.srcDirs = [
'src/red/res/layouts/xyz',
'src/red/res/layouts/abc',
'src/red/res/layouts',
'src/red/res'
]
assets.srcDirs = ['src/red/assets']
manifest.srcFile 'src/red/AndroidManifest.xml'
}
blue {
java.srcDirs = ['src/blue/java']
res.srcDirs = [
'src/blue/res/layouts/xyz',
'src/blue/res/layouts/abc',
'src/blue/res/layouts',
'src/blue/res'
]
assets.srcDirs = ['src/blue/assets']
manifest.srcFile 'src/blue/AndroidManifest.xml'
}
}
} //andorid
dependencies {
// yout dependencies
}