How do I specify signingConfigs for different product variants with flavor dimensions?

1k Views Asked by At

This has been asked before (e.g. Gradle signing with flavors and dimensions), but the answers don't seem to work with Gradle 3.5.

With 2 flavor dimensions I'm specifying signingConfigs per release variant like this:

signingConfigs {
    klondikeGoogleRelease
    ...
    pyramidGoogleRelease
    pyramidAmazonRelease
}

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        minifyEnabled false
    }
}

applicationVariants.all { variant ->
    def flavors = variant.productFlavors
    variant.mergedFlavor.setApplicationId flavors[0].ext.applicationId + flavors[1].ext.applicationIdSuffix

    if (variant.buildType.name == "release") {
        variant.mergedFlavor.setSigningConfig android.signingConfigs[variant.name]
    }
    println "Mergedflavor: ${variant.name} signing ${variant.signingConfig.name} ready ${variant.signingReady}"
}

This is enough for gradle signingReport to report the correct settings, but gradle assemblePyramidGoogleRelease (for example) will build an unsigned apk.

It's skipping the validateSigningPyramidGoogleRelease task, which is reflected in the results of the gradle tasks --all output, which doesn't list validateSigning* for any of the *Release variants.

1

There are 1 best solutions below

0
On

you can set signing config before package task

package task name display with you flavors and buldTypes

project.afterEvaluate {
    tasks.findByName("packageFlavorBuildType").doFirst {
        packageFlavorBuildType.setSigningConfig(signingConfigs.yourKeyConfig)
    }
}