Я работаю над приложением для Android с Gradle в качестве системы сборки.
Моя цель - использовать значение (имя пакета) как applicationId
:
productFlavors {
orange {
applicationId "com.fruits.android.orange"
// ...
Но также выставить его через BuildConfig
, чтобы Java-код имел к нему доступ.
Этот доступ должен быть извне (а именно, бесплатная версия приложения должна знать имя пакета платной версии, чтобы она могла предложить пользователю выполнить обновление в магазине Play).
Итак, я хотел бы сделать что-то вроде этого:
productFlavors {
orange {
applicationId orangeProPackage
// ...
buildConfigField 'String', 'ORANGE_PRO_PACKAGE', "$orangeProPackage" // ?
Только я не уверен, как определить orangeProPackage
, чтобы он был виден во всем build.gradle и не ломал скрипт.
Поскольку есть несколько разных вкусов, было бы лучше, если бы я мог как-то сгруппировать все эти константы вот так (наверное?):
def proPackages = [
orange: "..."
apple: "..."
banana: "..."
]
а затем ссылайтесь на них в понятной и описательной манере, например proPackages.orange
и т. д.
Вопрос в том, как этого добиться?
Это не дубликат Это можно ли объявить переменную в Gradle пригодной для использования в Java?
Я видел этот вопрос (и несколько других). Я знаю, как объявить buildConfigFields, у меня их уже предостаточно. Мой вопрос касается повторного использования того же значения, что и buildConfigField
и applicationId
.
buildConfigField
иapplicationId
. - person Konrad Morawski   schedule 26.10.2015