개발/안드로이드 스튜디오

(Gradle) BOM(Bill of Materials)이란?

DinoDev 2025. 1. 31. 23:39
728x90
반응형

안녕하세요! 이번 글에서는 Gradle BOM(Bill of Materials)이 무엇인지, 그리고 Android 개발, 특히 Jetpack Compose에서 어떻게 활용할 수 있는지 알아보겠습니다.

 

1. BOM(Bill of Materials)

📌 라이브러리 버전 관리 문제

Android 개발을 하다 보면, 여러 라이브러리를 추가하는 경우가 많습니다.

예를 들어, Jetpack Compose를 사용할 때 compose-ui, compose-material, compose-runtime 등 다양한 라이브러리를 함께 추가해야 합니다.

dependencies {
    implementation("androidx.compose.ui:ui:1.5.0")
    implementation("androidx.compose.material:material:1.4.3")
    implementation("androidx.compose.runtime:runtime:1.5.1")
}

이 경우, 서로 다른 버전이 섞이면서 호환성 문제가 발생할 수 있습니다.

예를 들어, compose-ui1.5.0인데, compose-material1.4.3이면, 내부적으로 버전 충돌이 날 가능성이 있습니다.

2. Jetpack Compose에서 BOM 적용하기

Google은 Jetpack Compose 관련 라이브러리를 쉽게 관리할 수 있도록 androidx.compose:compose-bom을 제공합니다.

BOM을 사용하면 개별 라이브러리의 버전을 명시할 필요 없이, BOM에서 지정한 최신 호환 버전이 자동으로 적용됩니다.

dependencies {
    implementation(platform("androidx.compose:compose-bom:2024.01.00"))

    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.material:material")
    implementation("androidx.compose.runtime:runtime")
}

BOM 적용 후 장점

개별 라이브러리의 버전을 명시할 필요 없음.

BOM이 지정한 호환 가능한 최신 버전이 자동 적용됨.

업데이트 시 compose-bom 버전만 변경하면 됨.

 

Compose BOM 버전

https://developer.android.com/develop/ui/compose/bom/bom-mapping

 

BOM과 라이브러리 버전 매핑  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. BOM과 라이브러리 버전 매핑 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 선택하기 2025.01.01 2025.01.00

developer.android.com

 

3. platform() vs enforcedPlatform() 차이

platform() (권장)

BOM에서 제공하는 버전을 사용하지만, 필요하면 개별 라이브러리의 버전을 수동으로 변경 가능합니다.

dependencies {
    implementation(platform("androidx.compose:compose-bom:2024.01.00"))

    implementation("androidx.compose.ui:ui") // BOM 버전 사용
    implementation("androidx.compose.material:material:1.3.0") // 특정 버전 강제 지정 가능
}

enforcedPlatform() (강제 적용)

BOM에서 제공하는 버전을 무조건 강제 적용합니다. 개별 라이브러리의 버전을 변경해도 BOM이 지정한 버전이 우선됩니다.

dependencies {
    implementation(platform("androidx.compose:compose-bom:2024.01.00"))

    implementation("androidx.compose.ui:ui") // BOM 버전 사용
    implementation("androidx.compose.material:material:1.3.0") // ❌ 적용되지 않고 BOM 버전이 강제됨
}

 

4. 마무리

Gradle BOM은 라이브러리를 관리하는 관점에서 버전 충돌 없이 여러 라이브러리의 버전을 일관되게 관리할 수 있는 좋은 도구 입니다.

728x90
반응형