Как правильно настроить код и имя версии проекта в Gradle 8.4Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как правильно настроить код и имя версии проекта в Gradle 8.4

Сообщение Anonymous »

Я настраиваю несколько проектов в gradle 8.4 и пытаюсь создать хорошую систему управления версиями для этих проектов. Моим первым инстинктом было установить переменные для второстепенных/мажорных/патчей и т. д. в файле gradle.properties. , как в старые времена. Видимо, я больше не настраиваю должным образом или что-то изменилось.
Мой файл gradle.properties (цифры являются примерами):

Код: Выделить всё

#Production
VERSION_CODE_PROD= 101
versionCodeProd = 101

VERSION_MAJOR_PROD=1
VERSION_MINOR_PROD=0
VERSION_PATCH_PROD=1

#Staging
VERSION_CODE_STAGING=101

VERSION_MAJOR_STAGING=1
VERSION_MINOR_STAGING=0
VERSION_PATCH_STAGING=1
Естественно, я безуспешно пытался получить доступ к этим переменным в файле build.gradle проекта:
build.gradle проекта ext:

Код: Выделить всё

ext {
//prod
versionName = VERSION_MAJOR_PROD + '.' + VERSION_MINOR_PROD + '.' + VERSION_PATCH_PROD
versionCode = VERSION_CODE_PROD

//staging
versionNameStag = VERSION_MAJOR_PROD_ALT + '.' + VERSION_MINOR_PROD_ALT + '.' +      VERSION_PATCH_PROD_ALT
versionCodeStag = VERSION_CODE_PROD_ALT
}
В приведенном выше коде указано, что все эти ссылки на gradle.properties не разрешены, даже простое объявление переменной (

Код: Выделить всё

foo = bar
) невозможно разрешить (и я не могу получить доступ к этим переменным в модуле:app build.gradle)
Раньше я получал доступ к этим переменным в модуле: приложение build.gradle вот так:

Код: Выделить всё

productFlavors {
production {
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
}

staging {
versionCode rootProject.ext.versionNameStag
versionName rootProject.ext.versionCodeStag
}
}
Попробовал просмотреть документацию по gradle 8, чтобы увидеть изменения, и теперь я знаю, что мне следует использовать Kotlin DSL для этих конфигураций. Мой вопрос в том, как перевести прежнюю реализацию, которая у меня была (что некоторые старые приложения все еще используют) аналогичную реализацию на Kotlin DSL?
При поиске в документе Kotlin DSL и настройке среды сборки
я наткнулся на дополнительное делегирование, и попытался реализовать это в build.gradle проекта:

Код: Выделить всё

ext {
val versionCodeProd : Int by extra(1)
}
Но не могу получить к нему доступ с помощью versionCode = project.extra["versionCodeProd"]
где-либо еще (очевидно, я синхронизировал проект после его объявления)
п>

Подробнее здесь: https://stackoverflow.com/questions/786 ... gradle-8-4
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»