android stuido 3.0以上library使用flavor

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

发布了9 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/spyunknow/article/details/90210508