В Android-проектах зависимости обновляются тихо: transitive upgrade пришёл, сборка не сломалась, никто не заметил.
Dependency Locking фиксирует resolved версии:
// build.gradle.kts
dependencyLocking {
lockAllConfigurations()
}
Запускаешь
./gradlew dependencies --write-locks, Gradle создаёт .lockfile в gradle/dependency-locks/. После этого любое изменение версий требует явного --update-locks.Dependency Verification проверяет подлинность артефактов:
# gradle.properties
org.gradle.dependency.verification=strict
Инициализация:
./gradlew --write-verification-metadata sha256. Создаёт gradle/verification-metadata.xml с checksums.Оба файла идут в git. Локинг без верификации не защитит от подмены артефакта на CDN. Верификация без локинга не предотвратит silent upgrade. Работает только в паре. В большинстве Android-проектов ни одно из этого не включено, а полезно чтобы остановиться каскадные неявные обновления
#Gradle #Android #DevSecOps
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34👎7