android

[Android] Catalog 마이그레이션 후기

sieunju 2025. 3. 3. 13:34
반응형

안녕하세요. 안드로이드에서 버전을 관리하는 형식이 3가지가 있습니다. 

1. ext
2. buildSrc
3. version catalog 

여기서 buildSrc를 비공식적이지만, 관행처럼 사람들이 많이 사용했습니다. 2년 전쯤?에 안드로이드에서 version catalog 적용 관련해서 세미나가 나오고 이제는 "공식적으로 지원하는 version catalog"를 내 개인 프로젝트에 입히면 어떨까? 생각이 들어서 한번 해봤습니다. 그와 동시에 Android Gradle Plugin 을 8.2 -> 8.7로 올렸습니다. 

https://github.com/sieunju/til 

TIL 모듈 구조

지금 와서 보면 되게 난잡한 구조이지만, 아래와 같은 구조로 구성 되어 있습니다.

간단 설명하자면 모든 기능(feature) 모듈은 core 모듈에 의존하고, 각 기능(feature)모듈들은 "직접적"으로 의존하는게 아닌 간접적으로 _bridge 모듈을 의존하여 화면간 이동시 bridge 모듈을 사용하여 처리하도록 되어 있습니다. 이렇게 되면 장점중에 하나가 각 모듈간의 클래스명이 겹치거나 그런 경우가 없기 때문에 쉽게 추가/삭제가 용이하다는 장점이 있습니다. 간간히 아이디어 생각난것들에 대해서 공부해보면서 이제는 이 모듈들이 너무 많아졌다는.... 시간 날때 줄이거나 해야할거 같습니다..ㅡ,.ㅡ;;

 

buildSrc -> version catalog Migrate

라이브러리 버전 관리 시스템을 바꾼거라 특별히 신경써야 한다는건 없었고, 무난하게 마이그레이션 작업을 했던거 같습니다. 다만, 기존 대비 어떤점이 큰 장점이고, 더 편하냐? 했을때 신규 기능(feature) 모듈을 생성할때 약간의 간편함이 있었습니다. 그게 version catalog 라서 편한것보다 드로이드 나이츠에서 본 모듈 추가시 공통된 설정들을 손쉽게 사용하는점이 좀 간편함이 있었던거 같습니다. 아래 처럼 build-logic 에 gradle.kts 추가를 해서 아래와 같이 선언하면 선언한 라이브러리가 자동으로 선언해주는게 편했습니다.

plugins {
    id("til.library")
    id("til.androidx")
    id("kotlin-kapt") // DataBinding 대응
}

android {
    namespace = "com.features.main"
}

dependencies {
    implementation(projects.core)
    implementation(projects.features.recyclerviewBridge)
    implementation(projects.features.networkBridge)
    implementation(projects.features.baseMvvmBridge)
    implementation(projects.features.asyncMigrateBridge)
    implementation(projects.features.composeUiBridge)
    implementation(projects.features.composePermissionsResultBridge)
    implementation(projects.features.composeNavigationBridge)
}

 

 

마무리

buildSrc에서도 common.gradle 를 통해서 간단히 자바 버전 정도는 할수 있었는데 이렇게 디테일하게 하는거 보고 "이게 되네?" 되서 신기 했던거 같습니다. 

반응형