我有一个Android应用程序,我想为不同的客户定制,通常更改颜色。
我可以使用口味,但是 问题是每个应用程序应该有2个阶段(因此,每个客户端有2个应用程序),1个用于QA,1个用于Prod,他们使用不同的rest-api URL,为每个客户定制。
对我来说最理想的是一种嵌套风格的方法,以便我可以为每种风格定义属性,但不支持它。这也允许我修改client_1的一些布局,并使用main中的其余布局,我也需要这样做。例如:
productFlavors {
client_1 {
dev {
buildConfigField "String", "API_URL", "https://...."
}
prod {
buildConfigField "String", "API_URL", "https://...."
}
}
client_2 {
dev { //...
}
prod {
//...
}
}
}
知道如何实现这一目标吗?
另一种选择是拥有一个通用的图书馆应用程序,并为不同的客户端配置不同的应用程序,但这会使它更复杂。
答案 0 :(得分:2)
在我使用的项目中,使用产品风格构建类型。我会在这里解释一下。 我的项目看起来像
并在gradle文件中添加以下行
buildTypes {
prod {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
dev {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
client_1 {
applicationId "com.example.client_1"
versionCode 1
}
client_2 {
applicationId "com.example.client_2"
versionCode 1
}
}
答案 1 :(得分:2)
当应用程序基于多个条件时,您可以定义风味维度,而不是创建大量风味。
风味维度定义了将用于生成变体的笛卡尔积。
示例:
flavorDimensions("dimA", "dimB")
productFlavors {
row1 {
...
dimension = "dimA"
}
row2 {
...
dimension = "dimA"
}
row3 {
...
dimension = "dimA"
}
col1 {
...
dimension = "dimB"
}
col2 {
...
dimension = "dimB"
}
col3 {
...
dimension = "dimB"
}
}
此配置将生成18个(3 * 3 * 2)变体(如果您有2个标准构建类型:debug
和release
)。
将创建以下构建变体:
row1-col1-debug
row1-col2-debug
row1-col3-debug
row1-col1-release
row1-col2-release
row1-col3-release
row2-col1-debug
row2-col2-debug
row2-col3-debug
row2-col1-release
row2-col2-release
row2-col3-release
row3-col1-debug
row3-col2-debug
row3-col3-debug
row3-col1-release
row3-col2-release
row3-col3-release