본문 바로가기
Android/etc

[Android Gradle] 버전 카탈로그로 Gradle 관리하기

by wannagohome97 2024. 3. 28.

작년 6월? 이후로 안드로이드 스튜디오 업데이트를 무시하고 있다가

이번에 업데이트를 하고 New Project 로 플젝을 만들었는데

Gradle 쪽이 뭔가 바뀌었더군요...?

implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
??

 

그래서 libs 를 따라가서 보니 libs.version.toml 이라는 파일이 나왔습니다.

[versions]
agp = "8.3.1"
kotlin = "1.9.0"
coreKtx = "1.12.0"
...

[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
...

[plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" }
jetbrainsKotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }

 

뭔가 눈치껏 어떻게 작성하는지는 알겠는데 그래서 어떻게 작성하는거지?

 

싶어서 찾아봤습니다.

 

버전 카탈로그로 빌드 이전  |  Android Studio  |  Android Developers

Gradle 구성 파일을 Gradle 버전 카탈로그로 이전합니다.

developer.android.com

상세한 설명은 여기 들어가셔서 공식 문서를 확인하셔도 되고

 

핵심 위주로 설명하면 이렇습니다.

 

예시로 Hilt 라이브러리를 사용해보겠습니다.

 

이전까지의 app 수준의 build.gradle(.kts) 에서는 아래와 같이 작성되었는데

plugins {
...
	id ("dagger.hilt.android.plugin")
}
dependencies {
...
	implementation ("com.google.dagger:hilt-android:2.48")
    
}

 

이젠 libs.version.toml 파일에서 아래와 같이 각 섹션을 구분하고

[versions]

[libraries]

[plugins]

 

각 섹션에 종속성 정보들을 아래처럼 작성해줍니다

[versions]
hilt = "2.48"

[libraries]
com-google-dagger-hilt = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt"}

 

여기서 group / name / version.ref 에 대해 설명드리자면

implementation("androidx.core:core-ktx:1.12.0")

 

위 예시에서

androidx.core 까지가 group

core-ktx 가 name

그 이후 오는 버전을 versions 섹션에 명시한 후 version.ref 에 작성해주면 됩니다.

 

 

그리고 libraries 섹션 아래에 작성되는 항목을의 네이밍은 "케밥 케이스" 로 작성하길 권장하고 있는데

케밥 케이스란 androidx-core 와 같이 - 를 이용해서 단어를 연결하는 것을 말합니다.

케밥 케이스인 이유는 케밥에 고기 꽂혀있는 것 처럼 생겨서 이렇게 부른다고 합니다 합니다.

 

플러그인의 경우 버전 레퍼런스가 없을 경우 기존처럼 app 수준의 build.gradle 에 id 로 작성해야한다고 합니다.

 

아무튼 위와같이 종속성 정보들을 작성하고 나서

implementation(libs.com.google.dagger.hilt)

 

와 같이 기존 dependencies 블록 안에 작성하면 됩니다.

케밥케이스로 작성된 경우 '.' 을 누를때 마다 다음 항목으로 딱 딱 나와줍니다. 

'Android > etc' 카테고리의 다른 글

프로젝트에 Exoplayer - FFmpeg Module 적용하기  (0) 2024.01.12