Comment définir et utiliser une constante dans le script de build Gradle (Android)?

Je suis en train de travailler sur une application Android avec Gradle que son système de construction.

Mon objectif est d'utiliser une valeur (un nom de paquet) comme un applicationId:

productFlavors {
   orange {
      applicationId "com.fruits.android.orange"
      //...

Mais aussi de les exposer via BuildConfig de sorte que le code Java a accès.

Cet accès doit être à partir de l'extérieur de la saveur (à savoir, la version gratuite de l'application a besoin de connaître le nom du package de la version payante de sorte qu'il peut demander à l'utilisateur pour une mise à niveau dans le Play store).

Donc j'aimerais faire quelque chose comme ça:

productFlavors {
   orange {
      applicationId orangeProPackage
      //...


buildConfigField 'String', 'ORANGE_PRO_PACKAGE', "$orangeProPackage" //?

Seulement je ne suis pas sûr de la façon de définir orangeProPackage de sorte qu'il est visible dans l'ensemble de la construction.gradle et ne se cassent pas le script.

Puisqu'il y a un peu de saveurs différentes, il serait mieux si j'arrivais à les regrouper toutes ces constantes comme ça (je suppose?):

def proPackages = [
        orange: "..."
        apple: "..."
        banana: "..."
]

puis référez-vous à un endroit propre et de manière descriptive, comme proPackages.orange etc.

La question est, comment le réaliser?

Ce n'est pas un doublon de Est-il possible de déclarer une variable dans Gradle utilisable en Java?

J'ai vu que la question (et quelques autres). Je sais comment déclarer buildConfigFields, j'en ai déjà beaucoup. Ma question est sur le réutilisation la même valeur qu'une buildConfigField et applicationId.

Double Possible de Est-il possible de déclarer une variable dans Gradle utilisable en Java?
ce n'est pas un doublon. J'ai vu que la question (et quelques autres). Je sais comment déclarer buildConfigFields, j'en ai déjà beaucoup. Ma question est à propos de la réutilisation, la même valeur qu'une buildConfigField et applicationId.

OriginalL'auteur Konrad Morawski | 2015-10-26