반응형
Version Catalog를 사용하는 이유
프로젝트 전체에서 사용되는 라이브러리를 중앙에서 관리할 수 있습니다.
이는 라이브러리 버전을 일관성 있게 유지하는 데 도움이 됩니다.
예를 들어 클린 아키텍처 구조로 멀티 모듈을 사용하시면서 라이브러리 버전을 각 모듈별로 선언한다면, 라이브러리 버전이 변경될 때마다, 각 모듈의 라이브러리 버전을 변경해야 하는 번거로움이 발생합니다.
Version Catalog를 사용하면 이러한 단점을 개선할 수 있습니다.
Version Catalog 생성
해당 포스팅에서는 프로젝트 생성시 Version Catalog를 생성하여 진행하겠습니다.
(작성일 기준 가장 최근 버전인 Koala는 프로젝트 생성시 디폴트로 Version Catalog가 적용됩니다!)
프로젝트를 생성하면 Gradle Scripts에 libs.version.toml 를 확인할 수 있습니다.
Version Catalog 사용
[versions]
라이브러리 버전 정보를 정의합니다.
버전에 대한 별칭(alias)을 사용하여 관리할 수 있습니다.
Ex)
core-ktx = "1.9.0"
agp = "8.1.3"
[libraries]
프로젝트에서 사용하는 라이브러리를 정의합니다.
각 라이브러리에 대해 group, name, version.ref 정보를 제공합니다.
Ex) core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "core-ktx" }
는 "androidx.core:core-ktx:1.8.0" 라이브러리를 사용한다는 것을 의미합니다.
[plugins]
프로젝트에서 사용하는 Gradle 플러그인을 정의합니다.
각 플러그인에 대해 id와 version.ref를 제공합니다.
Ex) com-android-application = { id = "com.android.application", version.ref = "agp" }
[bundles]
라이브러리 번들을 정의할 수 있습니다.
번들은 관련된 라이브러리들의 그룹을 의미합니다.
작성 규칙
- 이름 규칙:
- 이름은 소문자로 작성해야 합니다.
- 단어 사이에 하이픈(-)을 사용할 수 있습니다.
- 언더스코어(_)는 사용할 수 없습니다.
- 버전 규칙:
- 버전은 점(.) 구분자를 사용하여 작성해야 합니다.
- 버전 문자열에는 알파벳, 숫자, 점(.), 하이픈(-)만 사용할 수 있습니다.
- 버전 문자열 시작 부분에 "v"를 사용할 수 없습니다.
- 기타 규칙:
- [versions] 섹션에서 정의한 버전 별칭은 [libraries] 및 [plugins] 섹션에서 version.ref로 참조해야 합니다.
- [libraries] 섹션에서 group, name, version.ref 형식을 준수해야 합니다.
- [plugins] 섹션에서 id, version.ref 형식을 준수해야 합니다.
build.gradle (module) 적용
plugins
libs.plugins.(플러그인 이름)
주의: 선언한 라이브러리 이름이 android-library 라면 android.library로 작성하셔야 합니다.
alias(libs.plugins.android.library)
dependencies
libs.version.toml - [libraries] 에 작성한 라이브러리들을 사용하는 방법은 간단합니다.
libs.(선언한 라이브러리 이름)
주의: 선언한 라이브러리 이름이 core-ktx 라면 core.ktx로 작성하셔야 합니다.
implementation(libs.core.ktx)
[bundles] 사용법
[versions]
#Navigation
navigation = "2.5.3"
[libraries]
#Navigation
navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "navigation" }
navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "navigation" }
#Accompanist
accompanist-navigation-animation = {group = "com.google.accompanist", name = "accompanist-navigation-animation", version.ref = "accompanist"}
[plugins]
Ex) com-android-application = { id = "com.android.application", version.ref = "agp" }
[bundles]
navigation = ["navigation-fragment-ktx", "navigation-ui-ktx", "accompanist-navigation-animation"]
예시처럼 여러개의 libraries 정보를 그룹화해서 사용할 수 있습니다.
// builde.gralde (Module)
dependencies {
// Navigation
implementation(libs.bundles.navigation)
}
반응형
'Android > [Android] ETC' 카테고리의 다른 글
[Android Clean Architecture] Hilt 설정 (0) | 2024.07.02 |
---|---|
[Android] Room : openHelperFactory & 암호화 DB (0) | 2024.06.28 |
[Android Studio] 안드로이드 스튜디오 설치 (0) | 2023.01.14 |