Skip to main content

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

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

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

Gradle

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

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


# ...

# URL-адрес для загрузки дистрибутива Gradle
distributionUrl=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 года Android 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) версий обратная совместимость сохраняется и проблем быть не должно.

Материалы