java - 许多Android Gradle Flavors几乎相同,但manifestPlaceholders稍有不同

标签 java android gradle

构建项目时,我的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/

关于java - 许多Android Gradle Flavors几乎相同,但manifestPlaceholders稍有不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35030423/

相关文章:

java - 尝试复制矩阵时出现 ArrayIndexOutOfBoundsException

java - 如何解决TextView使用append方法无法添加新文本值的问题

java - res-long-hdpi 的屏幕尺寸

android:如何通过拖放将小部件移动到图形屏幕中的特定位置

java - 测试包不读取主包中定义的 Kotlin 类

java - 一次性从 Java 代码为 Windows、OSX 和 Linux 创建独立的可执行文件

java - 无法在 IntelliJ 2018.2.2 w/Gradle 4.9 中运行 JUnit 5 测试

java - 重写代码以仅获取几个变量

java - Android Studio 和 Java (JEE) 项目

java - 将外部图像加载到 GridView (无图像)