Как определить и использовать константу в скрипте 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. 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