5

以前有人问过这个问题(例如Gradle 签名与风味和维度),但答案似乎不适用于 Gradle 3.5。

使用 2 个风味维度,我为每个版本变体指定了以下签名配置:

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}"
}

这足以gradle signingReport报告正确的设置,但gradle assemblePyramidGoogleRelease(例如)将构建一个未签名的 apk。

它正在跳过validateSigningPyramidGoogleRelease任务,这反映在gradle tasks --all输出结果中,它没有列出validateSigning*任何*Release变体。

4

1 回答 1

1

您可以在打包任务之前设置签名配置

包任务名称显示与您的风味和 buldTypes

project.afterEvaluate {
    tasks.findByName("packageFlavorBuildType").doFirst {
        packageFlavorBuildType.setSigningConfig(signingConfigs.yourKeyConfig)
    }
}
于 2018-08-24T10:33:06.113 回答