Подписание Gradle с ароматами и размерами

Кто-нибудь знает, как подписать независимо несколько приложений, созданных с несколькими вариантами и измерениями? Я попытался получить имя задачи, чтобы предоставить конфигурацию для подписи, но она не сработала.

Вот мой файл Gradle:

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 {
        ...
    }
}

1 ответ

Решение:

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 {
        ...
    }
}

Также возможно установить идентификатор приложения, если необходимо:

applicationVariants.all { variant ->
    if (variant.name.equals("vanillaFreeRelease")) {
        variant.mergedFlavor.setSigningConfig(signingConfigs.vanillaFree)
        variant.mergedFlavor.setApplicationId("com.domain.custom.id")
    } else if (...) {
        ...
    }
}
Другие вопросы по тегам