通过ProductFlavor打渠道包

1,108 阅读2分钟

现在很多应用都要打渠道包和马甲包,并且不同的渠道包或者马甲包功能可能还会有一些差别,比如说logo,app的名字,签名。这个怎么解决呢

打渠道包首先要学习一下google官方flavor文档,这是地址 developer.android.com/studio/buil…

然后我们就要开始操作了

第一步:在app模块的build.gradle里面创建productFlavor,

image.png

这样我们就创建了两个渠道,我们可以给每个渠道定义不同的包名

image.png

这样我们就可以选择不同的渠道,打不同的渠道包了

下面我们为不同的渠道设置不同的logo和app的名字

image.png 首先我们在src下面创建xml文件,如上图

image.png 可见我们可以创建不同渠道文件夹下面的资源文件,在我们编译相应渠道的时候,会优先从相应渠道文件夹里面取资源
如果渠道文件夹里面没有的话,才会从main里面去找,在相应的渠道文件夹里面,我们可以定义xml,放图片,以及代码,编译的时候都会优先从这里面取,如果没有才会从main里面取默认的

我们在渠道文件夹里面定义的所有资源和代码类,在main里面都必须有一份默认的,否则会编译报错

image.png 这样我们就创建好了不同渠道的文件夹,主要功能写在main里面,不同渠道的不同功能在相应的渠道文件夹里面进行最小粒度的类或者资源覆盖(main里面必须要有默认的类或者资源)

不同的渠道包,使用不同的签名

image.png

如果是不同的功能,可以采用类覆盖的方式,也可以根据包名判断

productFlavor可以只在app模块里面定义,如果其他module里面也有功能差异,需要Flavor的话,也可以加,如果一个module加了productFlavor,那么其他引用它的模块都需要加这个ProductFlavor