일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 클린아키텍처
- 플레이스토어
- NavController
- 회원가입
- 안드로이드
- UiState
- Flow
- XML
- NavHost
- Jetpack
- ListAdapter
- 리사이클러뷰
- Android
- Authentication
- coroutine
- 로그인
- DiffUtil
- 코딩테스트
- 알고리즘
- 코틀린
- 컴포즈
- cleanarchitecture
- sharedFlow
- MVVM
- Kotlin
- Compose
- 커스텀뷰
- 파이어베이스
- Build variants
- 뷰
- Today
- Total
Grusie 안드로이드 개발 기술 블로그
[Android] 버전 카탈로그로 Gradle 의존성 관리하기 본문
의존성 관리를 위해 기존에 사용하던 방식은 buildSrc를 만들어 공용으로 사용하도록 관리하였었다. 얼마전 드로이드나이츠에서 버전 카탈로그에 대한 발표를 들었는데, 저렇게도 관리 할 수 있구나 하는 생각과 함께 직접 한 번 적용해 보려고 한다.
https://www.youtube.com/watch?v=zQAGIQzOJcg
buildsrc와 version catalog의 차이
- buildSrc
플러그인들을 작성하기 쉽다.
라이브러리 업데이트 정보를 알 수 없다. ( 별도의 라이브러리를 쓰면 해결은 된다. )
코드상에서 버전을 하나만 바꿔도 캐시를 무시하고 전체를 다시 빌드한다.
- version catalog
버전을 깔끔하게 관리할 수 있고, bundle 형태로 묶어서 관리할 수도 있다.
라이브러리 업데이트 정보를 알 수 없다. ( 별도의 라이브러리나 renovate를 쓸 수 있다. )
builSrc에서 버전 관리를 하면 현재로선 어떠한 이점도 없기 때문에 버전 카탈로그가 좋다.
( 숫자만 바꿔도 캐시가 무효화되고, 라이브러리 업데이트 여부도 알 수 없다. )
버전 카탈로그 사용법
안드로이드스튜디오 File -> New에서 Version Catalog를 선택해 버전 카탈로그 파일을 생성 할 수 있다.
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
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
https://velog.io/@hjtn/Android-Gradle-Version-Catalog-%EC%A0%95%EB%A6%AC
후기
buildSrc에 비해서, 새로 빌드한느 게 아니기에 속도가 조금 빠르다는 거 말고는 크게 다른 점은 모르겠다.
그래도 구글에서 권장하는 방법이기에 지속적으로 사용해 보려고 한다.
'안드로이드 개발' 카테고리의 다른 글
[Android] release 버전에서 Gson 파싱이 안 되던 오류(코드 난독화 문제) (0) | 2024.05.07 |
---|---|
[Android] 플레이 스토어 버전 업데이트 관리하기 (1) | 2024.05.07 |
[Android] 리사이클러뷰 DiffUtil 사용법 및 단일 체크 처리하기 (0) | 2024.04.30 |
[Android] CallAdapter로 레트로핏 에러 처리하기 (1) | 2024.04.25 |
[Android] 테스트 코드 작성하기(단위테스트 - unit test) (1) | 2024.04.03 |