이제 안드로이드 프로젝트를 생성하게 된다면 아래처럼 Version Catalog로 설정이 된다.
[versions]
agp = "8.3.0"
kotlin = "1.9.0"
...
[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
...
[plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" }
...
[bundles]
orbit = ["orbit-core", "orbit-viewmodel", "orbit-compose", "orbit-test"]
...
처음 보는 사람들은 이게 어떻게 사용하는 것인지 많이 헷갈려할 것 같아 간단 사용법을 아래 소개한다.
여러분들에게 익숙할 아래와 같은 친구를 version catalog로 만드는 과정으로 한번 알아보자
implementation("androidx.core:core-ktx:1.12.0")
우선 이거 하나만 기억하면 편해진다.
"모든 것은 : 으로 분리한다."
그래서 위를 분리하면 아래처럼 된다.
"group:name:version"
상세한 설명은 아래에서 이어서 하자.
[version]
내가 사용하고자 하는 친구의 version을 적어두면 된다.
위 예시의 경우 "1.12.0"이 될 것이다.
해당 버전을 저장하고싶은 이름을 두고 거기에 해당 값을 할당해주면 된다.
[version]
androidx = "1.12.0"
[libraries]
사용하고자 하는 친구의 속성을 정의해준다.
이때, 위에서 : 으로 나눈 친구들을 여기서 사용한다.
group에 해당하는 androidx.core
name에 해당하는 core-ktx
version에 해당하는 1.12.0
이걸 조합해주면 된다.
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidx" }
이때 version에 대한 것은 이미 위에 정의해뒀으니 이를 활용하도록 한다.
[plugins]
import만 하는것이 아니라 plugin으로 사용하는 친구들도 다 version catalog로 만들어줘야한다.
이것도 방법은 똑같다. 아래와 같이 일반적으로 사용하는 친구를 바꿔보자
id 'com.android.application' version '8.3.1' apply false
[version]
agp = "8.3.1"
[plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" }
[bundles]
이게 version catalog가 편한 부분이다.
하나의 기능을 구현하기 위해서 여러 플러그인들을 함께 Import해줘야 하는경우가 많다.
이를 위해서 여러개의 plugin을 묶어서 한방에 적용할 수 있게 해주는 친구다.
예를 들어 orbit이라는 library를 적용하기 위해서는 4개정도의 친구를 import해줘야한다.
매번 4개를 쓰는게 귀찮기때문에 우리는 bundles를 활용해보자.
[versions]
orbitMVI = "4.4.0"
[libraries]
orbit-core = { group = "org.orbit-mvi", name = "orbit-core", version.ref = "orbitMVI" }
orbit-viewmodel = { group = "org.orbit-mvi", name = "orbit-viewmodel", version.ref = "orbitMVI" }
orbit-compose = { group = "org.orbit-mvi", name = "orbit-compose", version.ref = "orbitMVI" }
orbit-test = { group = "org.orbit-mvi", name = "orbit-test", version.ref = "orbitMVI" }
[bundles]
orbit = ["orbit-core", "orbit-viewmodel", "orbit-compose", "orbit-test"]
이렇게 만든 bundles를 적용하기만 하면 끝이다.
그러면 저렇게 묶어둔 4개의 library가 적용된다.
plugins 사용법
project layer
plugins {
alias(libs.plugins.androidApplication) apply false
}
app layer
plugins {
alias(libs.plugins.androidApplication)
}
dependencies 사용법
dependencies {
// library 적용
implementation(libs.androidx.core.ktx)
// bundle 적용
implementation(libs.bundles.orbit)
}
이렇게 쓰면 된다~
참 쉽죠?