Gradle用风味和尺寸签名 [英] Gradle signing with flavors and dimensions

查看:132
本文介绍了Gradle用风味和尺寸签名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有谁知道如何独立签署多个应用程序,并生成多种风格和维度?
我尝试检索任务的名称以提供签名配置,但它不起作用。

does anyone know how to sign independently several applications generated with multiple flavors AND dimensions? I tried to retrieve the name of the task to provide the signing config but it didn't work.

这是我的gradle文件:

Here is my gradle file:

signingConfigs {
    vanillaPaid {
        ...
    }
    vanillaFree {
        ...
    }
    chocolatePaid {
        ...
    }
    chocolateFree {
        ...
    }
}

flavorDimensions "taste", "type"

productFlavors {
    vanilla {
        dimension "taste"
        applicationIdSuffix ".vanilla"
    }
    chocolate {
        dimension "taste"
        applicationIdSuffix ".chocolate"
    }
    free {
        dimension "type"
        ...
    }
    paid {
        dimension "type"
        ...
    }
}

buildTypes {
    release {
        def taskNames = project.gradle.startParameter.taskNames
        if (taskNames.size() > 0) {
            if (taskNames.get(0).contains('VanillaPaid')) {
                signingConfig signingConfigs.vanillaPaid
            } else if (taskNames.get(0).contains('VanillaFree')) {
                signingConfig signingConfigs.vanillaFree
            } else if(...) {
                ...
            }
        }
        ...
    }
    debug {
        ...
    }
}


推荐答案

解决方案是:

The solution is:

signingConfigs {
    vanillaPaid {
        ...
    }
    vanillaFree {
        ...
    }
    chocolatePaid {
        ...
    }
    chocolateFree {
        ...
    }
}

flavorDimensions "taste", "type"

productFlavors {
    vanilla {
        dimension "taste"
        applicationIdSuffix ".vanilla"
    }
    chocolate {
        dimension "taste"
        applicationIdSuffix ".chocolate"
    }
    free {
        dimension "type"
        ...
    }
    paid {
        dimension "type"
        ...
    }
}

applicationVariants.all { variant ->
    if (variant.name.equals("vanillaPaidRelease")) {
        variant.mergedFlavor.setSigningConfig(signingConfigs.vanillaPaid)
    } else if (variant.name.equals("vanillaFreeRelease")) {
        variant.mergedFlavor.setSigningConfig(signingConfigs.vanillaFree)
    } else if (variant.name.equals("chocolatePaidRelease")) {
        variant.mergedFlavor.setSigningConfig(signingConfigs.chocolatePaid)
    } else if (variant.name.equals("chocolateFreeRelease")) {
        variant.mergedFlavor.setSigningConfig(signingConfigs.chocolateFree)
    }
}

buildTypes {
    release {
        ...
    }
    debug {
        ...
    }
}

如果需要,还可以设置应用程序标识符:

It is also possible to set application identifier if needed:

applicationVariants.all { variant ->
    if (variant.name.equals("vanillaFreeRelease")) {
        variant.mergedFlavor.setSigningConfig(signingConfigs.vanillaFree)
        variant.mergedFlavor.setApplicationId("com.domain.custom.id")
    } else if (...) {
        ...
    }
}

这篇关于Gradle用风味和尺寸签名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆