Как определить и использовать константу в скрипте Gradle build (Android)?



Я работаю над приложением для Android с системой сборки Gradle.



Моя цель-использовать значение (имя пакета) как applicationId:



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


Но и выставить его через BuildConfig, чтобы код Java имел к нему доступ.



Этот доступ должен быть извне аромата (а именно, бесплатная версия приложения должна знать имя пакета платной версии, чтобы она могла предложить пользователю обновление в Play store).



Поэтому я хотел бы сделать что-то вроде это:



productFlavors {
orange {
applicationId orangeProPackage
// ...


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


Только я не знаю, как определить orangeProPackage, чтобы он был виден во всей сборке.грэдл и не нарушает сценарий.

Поскольку есть несколько разных вкусов, было бы лучше, если бы я мог как-то сгруппировать все эти константы (я полагаю?):



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


И затем ссылаться на них в чистой и описательной манере, как proPackages.orange и т. д.



Вопрос в том, как это сделать?

Это не дубликат Можно ли объявить переменная в Gradle, используемая в Java?



Я видел этот вопрос (и несколько других). Я знаю, как объявить buildConfigFields, у меня их уже достаточно. Мой вопрос касается повторного использования того же значения, что и a buildConfigField и еще applicationId.
607   1  

1 ответ:

Только я не знаю, как определить orangeProPackage, чтобы он был виден во всей сборке.грэдл и не нарушает сценарий.

Вы можете поместить его в gradle.properties в корне вашего проекта. Как и другие файлы .properties, это просто хранилище ключей и значений:

ORANGE_PRO_PACKAGE=com.morawski.awesomeapp

Затем вы ссылаетесь на него как на простую глобальную строковую переменную (ORANGE_PRO_PACKAGE) в вашем build.gradle:

buildConfigField 'String', 'ORANGE_PRO_PACKAGE', ORANGE_PRO_PACKAGE

Было бы лучше, если бы я мог каким-то образом сгруппировать все эти константы

Все, что связано с файлами .properties я с этим не справлюсь. Там вы, возможно, смотрите на определение глобалов в файле верхнего уровня build.gradle просто в простом Заводном коде или что-то в этом роде.

Comments

    Ничего не найдено.