https://developer.android.com/build/migrate-to-catalogs
https://www.youtube.com/watch?v=nwORxiiKuEc&ab_channel=Droidhalla
https://www.youtube.com/watch?v=WvtcCCCLfOc&ab_channel=TomGregory
https://www.youtube.com/watch?v=tWZgw127Vf8&ab_channel=PiAppStudio
gradle folder, create a file called libs.versions.toml.libs.versions.toml file에서 catalog를 찾기 때문에 파일 이름은 위 기본 명칭 그대로 가져가는게 좋다. (Note: It's possible to change the catalog file name; however, this requires changing your build files, so we don't recommend doing it.)
[versions]
[libraries]
[plugins]
각 섹션은 다음과 같이 사용된다.
versions block, dependencies and plugins의 버전을 가지고 있는 변수를 정의한다. subsequent blocks (the versions and plugins blocks)에서 정의된 변수를 사용.libraries block, dependencies을 정의한다.plugins block, plugins을 정의한다.빌드는 build scripts와 catalogs의 dependencies와 plugins를 동시에 사용할 수 있으므로 dependencies와 plugin을 개별적으로 마이그레이션해야 함.
The migration process is:
아래 코드 스니펫은 build.gradle.kts file의 기존 dependency를 제거하기 전이다.
dependencies {
implementation("androidx.core:core-ktx:1.9.0")
}
아래 코드 스니펫은 version catalog 파일에서 dependency를 정의하는 방법이다.
[versions]
ktx = "1.9.0"
[libraries]
androidx-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "ktx" }
catalog에서 권장되는 dependency block에 대한 네이밍 방식은 kebab case이다.
(such as androidx-ktx) → for better code completion assistance in your build files.
dependencies {
implementation(libs.androidx.ktx)
}
아래 코드 스니펫은 build.gradle.kts file의 기존 plugin 네임을 제거하기 전이다.
// Top-level `build.gradle.kts` file
plugins {
id("com.android.application") version "7.4.1" apply false
}
// Module-level `build.gradle.kts` file
plugins {
id("com.android.application")
}
아래 코드 스니펫은 버전 카탈로그 파일에서 플러그인을 정의하는 방법.
[versions]
androidGradlePlugin = "7.4.1"
[plugins]
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
As with dependencies, the recommended formatting for plugins block catalog entries is kebab case (such as android-application) → for better code completion assistance in your build files.
아래 코드 스니펫은 catalog를 적용한 뒤.
// Top-level build.gradle.kts
plugins {
alias(libs.plugins.android.application) apply false
}
// module build.gradle.kts
plugins {
alias(libs.plugins.android.application)
}
plugins{}@Suppress("DSL_SCOPE_VIOLATION")
참고: 8.1 미만의 Gradle 버전을 사용하는 경우 version catalog를 사용할 때 블록에 주석을 달아야 한다.
자세한 내용은 문제 #22797을 참조