Grusie 안드로이드 개발 기술 블로그

[Android] 버전 카탈로그로 Gradle 의존성 관리하기 본문

안드로이드 개발

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

grusie 2024. 4. 24. 13:02
728x90
반응형
SMALL

의존성 관리를 위해 기존에 사용하던 방식은 buildSrc를 만들어 공용으로 사용하도록 관리하였었다. 얼마전 드로이드나이츠에서 버전 카탈로그에 대한 발표를 들었는데, 저렇게도 관리 할 수 있구나 하는 생각과 함께 직접 한 번 적용해 보려고 한다.

https://www.youtube.com/watch?v=zQAGIQzOJcg

 

 

buildsrc와 version catalog의 차이

- buildSrc

플러그인들을 작성하기 쉽다.
라이브러리 업데이트 정보를 알 수 없다. ( 별도의 라이브러리를 쓰면 해결은 된다. )
코드상에서 버전을 하나만 바꿔도 캐시를 무시하고 전체를 다시 빌드한다.

- version catalog

버전을 깔끔하게 관리할 수 있고, bundle 형태로 묶어서 관리할 수도 있다.
라이브러리 업데이트 정보를 알 수 없다. ( 별도의 라이브러리나 renovate를 쓸 수 있다. )

 

builSrc에서 버전 관리를 하면 현재로선 어떠한 이점도 없기 때문에 버전 카탈로그가 좋다.
( 숫자만 바꿔도 캐시가 무효화되고, 라이브러리 업데이트 여부도 알 수 없다. )

 

버전 카탈로그 사용법

 

버전 카탈로그 사용법 - 파일생성

안드로이드스튜디오 File -> New에서 Version Catalog를 선택해 버전 카탈로그 파일을 생성 할 수 있다.

버전 카탈로그 사용법 - 파일 생성2

libs.versions.toml로 자동으로 추가된다.

 

libs.versions.toml 설명

[versions]
// 버전을 정의한다.
...

[libraries]
// 라이브러리를 정의한다.
...

[plugins]
// 플로그인을 정의한다.
...

각 태그 별로 정의 하는 부분이 나누어져 있다.

 

Versions 선언 방법

[versions]
hilt = "2.44"
androidDesugarJdkLibs = "1.2.2"

my-lib = { strictly = "[1.0, 2.0[", prefer = "1.2" }

의존성들의 버전을 작성한다.

특정 버전을 제외하는 등의 규칙은 여기에서 확인 할 수 있다.

https://docs.gradle.org/current/userguide/rich_versions.html#rich-version-constraints

 

Declaring Rich Versions

Gradle supports a rich model for declaring versions, which allows to combine different level of version information. The terms and their meaning are explained below, from the strongest to the weakest: strictly Any version not matched by this version notati

docs.gradle.org

Libraries 선언 방법

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

이렇게 세 가지 방법으로 라이브러리를 관리 할 수 있는데, versions의 정보를 가져오기 위해서는 version.ref를 사용하여 versions에서 해당하는 버전을 가져올 수 있다.

 

Plugins 선언 방법

[plugins]
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin"}

라이브러리 선언 방법과 크게 다르지 않다.

group과 name 대신에 id를 사용한다.

 

참고) 버전이 없는 플로그인은 버전 카탈로그는 관리 할 수 없다.

    id 'java-library'
    id 'org.jetbrains.kotlin.jvm' 

 

 

참고

https://jaeryo2357.tistory.com/128

 

[Android] Gradle 버전 카탈로그를 사용해 버전 관리하기

안녕하세요. 오늘은 Gradle 버전 카탈로그에 대해 간단히 알아보려고 합니다! Gradle 버전 카탈로그는? Gradle 버전 카탈로그는 멀티 모듈 프로젝트에서 의존성을 쉽게 공유하고 쉽게 관리할 수 있는

jaeryo2357.tistory.com

https://velog.io/@hjtn/Android-Gradle-Version-Catalog-%EC%A0%95%EB%A6%AC

 

[Android] Gradle Version Catalog 정리

Android App 개발 프로젝트를 하면서 멀티 모듈을 사용할 때, 버전을 관리하는 방법

velog.io

https://two22.tistory.com/81

 

Android - BuildSrc + Version Catalog ( 안드로이드 버전 관리하기 )

안드로이드에서 버전을 관리하는 방법이 점점 많아지고 있다. 간단하게 정리하자면, 1. ext를 통한 관리 Gradle에서 라이브러리 업데이트 가능 정보가 노출된다. 2. buildsrc를 통한 관리 플러그인들

two22.tistory.com

 

후기

buildSrc에 비해서, 새로 빌드한느 게 아니기에 속도가 조금 빠르다는 거 말고는 크게 다른 점은 모르겠다.

그래도 구글에서 권장하는 방법이기에 지속적으로 사용해 보려고 한다.

반응형
LIST