我的android项目中有很多口味(差不多50个),当我构建项目时,花费大约30分钟来打包所有apks。但apks几乎是相同的,它们之间的唯一区别只是一个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 package process'得到了this 我想也许这个过程可以改进。
答案 0 :(得分:0)
据我所知,每种风味都是独立的gradle任务。 Android工作室以串行方式运行它们。如果从命令行运行gradle并且同时执行多个任务,则可以稍微加快进程 - 但是要获得gradle以重新使用不会在类型之间更改的中间代码,我不认为它可以做到这一点,或者至少不容易 - 你可以想出如何将中间文件复制到另一个风格构建路径并欺骗它认为它不需要再次构建它们因为它们没有不会改变 - 但这可能比它的价值更麻烦。对于这种复杂而专业的东西,我直接点击了gradle论坛:https://discuss.gradle.org/