android stuido 3.0以上library使用flavor配置不同的包
libray中build文件配置
目前假设有文件结构如下
|-app
|-data
其中 app是application模块,data是library模块。
1、一般情况
当前工程有 “红色模式”,与“黑色模式” ,对应flavor为 red 与 black。并且配置flavor必须在data模块下时,配置data模块的build文件如下:
android {
//...
flavorDimensions "version"
productFlavors {
red{
dimension "version"
buildConfigField("String", "HOST_NAME", '"http://www.red.com/"')
}
black{
dimension "version"
buildConfigField("String", "HOST_NAME", '"http://www.black.com/"')
}
}
}
app模块下build文件如下:
android {
//...
flavorDimensions "version"
productFlavors {
red{
dimension "version"
}
black{
dimension "version"
}
}
}
dependencies {
//...
implementation project(':data')
}
注意点:
1、工程中data模块与app模块的flavorDimensions必须相同,不相同将会报错。
2、data模块flavor比app模块flavor多不会报错,多的flavor也不会被app模块依赖
2、flavor不一致情况
data模块build文件如下:
android {
//...
flavorDimensions "version"
productFlavors {
red{
dimension "version"
buildConfigField("String", "HOST_NAME", '"http://www.red.com/"')
}
black{
dimension "version"
buildConfigField("String", "HOST_NAME", '"http://www.black.com/"')
}
white{
dimension "version"
buildConfigField("String", "HOST_NAME", '"http://www.white.com/"')
}
}
}
data模块下flavor有 red,black,white。但是app由于不可知原因flavor需要设置为red,black,gray。build文件需要如下配置:
android {
//...
flavorDimensions "version"
productFlavors {
red{
dimension "version"
}
black{
dimension "version"
}
gray{
dimension "version"
matchingFallbacks = ['white']
}
}
}
dependencies {
//...
implementation project(':data')
}
注意点:
1、gray中配置 matchingFallbacks = [‘white’]表示 app将会在data模块中未命中gray时选择white。如果data模块中有gray,则会选gray。
2、matchingFallbacks = [‘white’]对应的值可以有多个用于命中library中的flavor。例如matchingFallbacks = [‘white’,‘blue’,‘orange’]。
参考
[1]添加构建依赖项: https://developer.android.com/studio/build/dependencies