Android

Android Version Catalog를 야무지게 써보자

chattymin 2024. 5. 8. 16:11
728x90
반응형

이제 안드로이드 프로젝트를 생성하게 된다면 아래처럼 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)
}

 

 

 

이렇게 쓰면 된다~

참 쉽죠?

728x90
반응형