Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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.

like image 765
Scott Graessle Avatar asked Nov 08 '22 21:11

Scott Graessle


1 Answers

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)
    }
}
like image 84
Jay Avatar answered Nov 15 '22 13:11

Jay