最近有这样一个需求:
因为区域扩展的原因,要将之前开发好的apk(这里叫A)改几个功能(例如替换几张图片,改几个逻辑)(改后的新apk叫B吧)。但是之前的apk还要在之前的区域使用。这里有以下两种方案:
1. 将A apk复制一份,重新创建一个分支,然后在A基础上改为B apk
这样做的缺点是增加了人力维护两个apk,还浪费了公司服务器内存
2. 使用多渠道打包方式
这种方式将A apk和B apk的差异剥离出来,然后相同的 代码部分公用。即节省了人力,维护起来也好(这时候突然想到了是不是和我们抽取基类道理一样啊)
方法:
1.在 build.gradle 中添加如下:
productFlavors {
A_app{
flavorDimensions "versionCode"
}
B_app{
flavorDimensions "versionCode"//在这个地方就可以增加一个B这个app的不同配置了,例如修改一个不一样的包名等
}
}
2.然后在app/src 目录下建立A_app文件夹和B_app文件夹。
3.将A_app中的差异和B_app中的差异抽取出来。相同的部分放在main里面
这里要多强调几句:
- main下面res文件夹下的所有文件,可以copy到A或者B中任意修改客制化,但是如果是要客制化一个java文件(此文件之前在main中),而不是新建一个java文件。则应该将此java文件分别剪贴到A和B下,此时main下不能再有此java文件了。否则报错。
4.点击下图左边选择相对应的apk编译即可