构建项目时,我的android项目中有很多口味(将近50种),打包所有apk大约需要30分钟。但是apk几乎相同,它们之间的唯一区别只是一个manifestPlaceholder值。
这是我的gradle文件中的一些代码:
productFlavors {
ltest {}
demo {}
C91zhushou {}
C360sousuo {}
C360yyy {}
baidusousuo {}
wandoujia1 {}
weibotuiguang {}
sougousousuo {}
meizu {}
yidong {}
liantong {}
mumayi {}
wangyi {}
leshangdian {}
sohu {}
youyi {}
samsung {}
wandoujia {}
lg {}
nearme {}
ppzhushou {}
sougou {}
suning {}
liqu {}
yiyonghui {}
taobao {}
huawei {}
jrtt1 {}
jrtt2 {}
yiming1 {}
yiming2 {}
yiming3 {}
wap {}
web {}
anzhuo {}
qihu {}
yingyongbao {}
xiaomi {}
anzhi {}
yingyonghui {}
jifeng {}
baidu {}
googleplay {}
jiangsudianxin {}
baiduCPT {}
}
productFlavors.all {
flavor ->
if (flavor.name.startsWith('C')) {
flavor.manifestPlaceholders = [CHANNEL_CODE_VALUE: name.substring(1), TD_CHANNEL_ID_VALUE: name.substring(1)]
} else {
flavor.manifestPlaceholders = [CHANNEL_CODE_VALUE: name, TD_CHANNEL_ID_VALUE: name]
}
}
如您所见,只有CHANNEL_CODE_VALUE不同。
在问这个问题之前,我搜索了“android gradle打包过程”并得到了this
而且我认为也许可以改进这一过程。
最佳答案
据我了解,每种口味都是一项独立的任务。 Android studio依次运行它们。如果您从命令行运行gradle并同时执行多个任务,则可能能够稍微加快该过程的速度-但就gradle而言,可以重复使用在两种风格之间不变的中间代码,我认为它不能做到这一点,或者至少不容易做到-您可能想出了如何将中间文件复制到其他口味的构建路径,并欺骗它以为它不需要再次构建这些文件,因为它们没有不会改变-但这可能比它的值(value)还要麻烦。对于这种复杂而专业的事情,我将直接访问gradle论坛:https://discuss.gradle.org/