Skip to main content

Обновление версий

Своевременное обновление версий Gradle и его плагинов гарантирует, что вы используете наиболее актуальную версию без багов и уязвимостей.

Так же с выходом новых обновлений появляются новые функции, которые, возможно, понадобятся в проекте.

Gradle#

Мы используем Gradle Wrapper, как обертку, которая автоматизирует процесс установки нужной версии Gradle.

Чтобы поменять версию Gradle в вашем проекте, необходимо перейти в директорию gradle/wrapper, и открыть файл его настроек gradle-wrapper.properties:


# ...
# URL-адрес для загрузки дистрибутива GradledistributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
# ...

Каталог с возможными версиями Gradle вы можете найти тут.

caution

Gradle придерживается такого подхода к версионированию, при котором апдейты минорных версий не нарушают обратную совместимость. При обновлении же мажорных версий, например Gradle 6.9.1 ~> 7.0.2 есть высокая вероятность что что-то будет несовместимо, поэтому такие апдейты надо делать аккуратно и проверять, что будет с обеими платформами.

Plugins#

Что делать если Android Studio предложила обновить Android Gradle Plugin (AGP) или Kotlin Gradle Plugin? Какие плагины и зависимости можно обновлять без последствий?

Kotlin и Android В принципе, вы можете обновлять все плагины и зависимости, поддрживющие семанстическое версионирование, но на минорных апдейтах, чтобы не нарушалась обратная совместимость.

С ноября 2020 года Andorid Gradle Plugin поддерживает семантическое версионирование, поэтому при обновлении AGP с версии 7.0 на версию 7.1 ничего сломаться не должно.

Kotlin поддерживает немного другой вид версионирования, о котором вы можете прочитать тут.

Например, если в вашем проекте используется Kotlin Multiplatform Plugin:

plugins {    kotlin("multiplatform") version "1.4.21"}

то при смене feature версии 1.4.21 ~> 1.5.21 нужно проверить компиляцию обеих платформ и работу кода во время выполнения. Так же скорее всего придется обновлять и версии библиотек на те, которые поддерживают новую версию.

А при смене incremental (1.5.21 -> 1.5.30) и bugfix (1.5.20 -> 1.5.21) версий обратная совместимость сохраняется и проблем быть не должно.

Материалы#