본문 바로가기

프로그램/Android

[캠월드] 캠월드 개발일지 1(멀티모듈 적용)

와이프와 함께 캠핑을 다닌지 벌써 5개월이 된거 같다.

 

캠핑을 다니면서 든 생각이 좋은 캠핑장은 미리미리 예약이 꽉차있고 몇일부터 캠핑장 예약제가 열리고 

 

전화로만 예약이 가능하고 등등 무수히 다양한 형식으로 되어있어서 앱을 만들어서 관리하고 그 이상으로 유지해 나가보자 라는 형식으로 

 

술잔을 붙이치면서 얘기를 하게 되었고, 언제 개발하냐 이렇게 얘기가 나오다가 본격적으로 개발을 진행하게 되었다. 각자의 일이 있는만큼

 

빠르게 개발을 진행하지는 못하겠지만 시간이 나는데로 개발을 진행하게 되었다.

 

일단 유능한 와이프가 디자인을 뽑아서 나온 디자인의 형태

 

 

이렇게 이쁘게 디자인을 뽑아주니깐 열심히 한번 만들어 봐야지 하고 개발을 진행하여 오랜만에 github에 들어가 프로젝트를 뚫고 프로젝트 셋팅을 시작!

 

신규 프로젝트인 만큼 Compose로 작업을 진행하기로 하였고, 프로젝트 아키텍쳐는 NowAndroid를 분석하여 멀티모듈로 셋팅을 하게되었다.

 

여태까지 프로젝트는 buildSrc 를 통해서 라이브러리와 버전관리를 하고, 3개의 모듈로만 하였는데 NowAndroid는 build-logic 을 통하여 관리를 하고 무수히 많은 모듈을 사용하여서 분석이 조금 필요했다.

 

setting.gradle에 아래 코드를 삽입해줘야하며, 만들어진 build-logic의 setting.gradle에는 그아래 코드를 넣어줘서 라이브러리 관련 파일을 참조할수 있도록 해줘야한다.

includeBuild("build-logic")
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
    }

    versionCatalogs {
        create("libs") {
            from(files("../gradle/libs.versions.toml"))
        }
    }
}

rootProject.name = "build-logic"

 

build-logic에서 libs.versions.toml 에 적용시키는 방법은 convention 모듈의 gradle 파일에 아래와같이 코드를 삽입한다

gradlePlugin {
    plugins {
        register("androidApplicationCompose") {
            id = "camp.android.application.compose"
            implementationClass = "AndroidApplicationComposeConventionPlugin"
        }

        register("androidApplication") {
            id = "camp.android.application"
            implementationClass = "AndroidApplicationConventionPlugin"
        }

        register("androidLibrary") {
            id = "camp.android.library"
            implementationClass = "AndroidLibraryConventionPlugin"
        }

        register("hilt") {
            id = "camp.android.hilt"
            implementationClass = "HiltConventionPlugin"
        }

        register("androidFeature") {
            id = "camp.android.feature"
            implementationClass = "AndroidFeatureConventionPlugin"
        }
    }
}

 

 

implementationClass 에 들어가는 것들은 파일들로 상황에 맞춰서 작업을 진행하여 코딩을 진행하였다.

 

 

 

위처럼 멀티모듈을 적용하기 위해서 라이브러리 관련 작업을 먼저 진행하였으며, 처음보는 형태라 분석하는데 조금 까다로웠다. 그렇게 조금 삽질 및 분석을 진행한후 아래 이미지와 같이 프로젝트가 셋팅되었으며, 모듈마다 필요한 라이브러리와 필수 라이브러리들이 각각 다르므로 잘 생각해서 플러그인들을 만들면 되겠다. 처음만들때는 '이렇게까지?' 라는 생각이 들었지만 하다보니 모듈하나 설정하는데 굉장히 간단하게 처리가 되어서 아 이렇게 되기 때문에 이렇게 작업을 진행하는구나 라는 생각이 들었다. 

 

완성된 멀티모듈 형태

 

 

아래는 Home화면 작업을 진행할 모듈의 gradle 매우 간단하게 라이브러리 참조가 되었다.

 

 

 

처음으로 작업을 진행해보는 컴포즈라 생각보다 많이 버벅될테지만 배포까지 할 나의 프로젝트라서 아주 잘 만들어보도록 해야겠다!!

 

반응형