안드로이드 멀티 모듈에 대해

신정훈·2023년 1월 6일
0

MVVM 패턴에 맞춰 프로젝트 구조를 어떻게 잡아야 할지 고민 중에 모듈 나눠서 개발하는 형태를 처음접했다.
이것은 바로 멀티 모듈이라는 것인데 이것에 대해 공부하고자 한다.
규모가 작은 프로젝트만 해본 나는 멀티 모듈 프로젝트로 구성할 필요가 없었지만 나중에 큰 프로젝트에 대한 경험을 해볼 기회가 생길수 있기 떄문에 미리 공부해보고자 한다.

모듈이란?

모듈은 소스 파일 및 빌드 설정으로 구성된 모음이며, 이를 통해 프로젝트를 별개의 기능 단위로 분할할 수 있습니다. 프로젝트에는 하나 이상의 모듈이 포함될 수 있으며, 하나의 모듈이 다른 모듈을 종속 항목으로 사용할 수 있습니다. 각 모듈은 개별적으로 빌드, 테스트 및 디버그 할 수 있습니다.

위의 말처럼 소스파일과 빌드파일로 구성된 모음이다. 프로젝트를 처음 생성 시 App 모듈이 생성되는데 이것이 바로 모듈이다.

모듈의 종류

Application

안드로이드 프로젝트를 만들 때 기본으로 생성되는 app 모듈은 Application 모듈입니다. 빌드의 결과로 APK 파일을 생성합니다. 앱을 실행하기 위해선 Application 모듈이 반드시 필요합니다.

Android Library

안드로이드 프로젝트에서 지원되는 모든 파일 형식을 포함할 수 있습니다. 다른 Application 모듈의 종속 항목으로 추가할 수 있습니다. 빌드의 결과로는 AAR 파일이 생성됩니다.

Java or Kotlin Library

이름 그대로 순수한 Java 혹은 Kotlin으로만 이루어진 모듈입니다. 안드로이드 프레임워크로부터 독립적인 기능을 구현할 때 사용합니다. 빌드의 결과로는 JAR 파일이 생성됩니다.

멀티 모듈 프로젝트란?

멀티 모듈이란 위와 같은 모듈 여러개를 나눠 하나의 프로젝트를 이루는 것을 말한다.

그렇다면 왜 이렇게 모듈을 나눠서 프로젝트를 구성하는 것일까?

1. 의존성이 높아질 수 있다.

내가 기존에 했던 프로젝트 들의 구조는 모두 App 모듈안에서 진행을 했었다. 물론 각 계층의 독립성을 유지하며 프로젝트를 진행하고자 했지만 100% 규칙들을 지켜가며 진행하지 못했다. 가령, ViewModel에서 Activity에 직접 접근 한다거나 아니면 Activity에서 직접 API를 호출한다거나.. 협업을 하다보면 이런 경우가 종종 있었다. 그래서 규칙이 지켜지지 않는 경우들 즉, 의존성이 높아지는 코드를 원천적으로 막아주는게 멀티 모듈이다. 애초에 build.gradle 파일에 모듈을 추가해주지 않으면 접근 조차되지 않기 때문에 원천적으로 의존성이 높은 코드를 차단 할 수가 있다.

2. 빌드 속도가 늘어난다.

뭐.. 잘모르겠지만 속도가 늘어난다고한다.

3. 코드의 재사용성

만약 특정 기능이 A, B 모듈에서 똑같이 사용되는 경우가 있을때 해당 기능이 있는 모듈을 곧바로 추가함으로써 코드의 재사용성을 높힐 수 있다.

끝으로 멀티 모듈로 프로젝트를 구성하면 gradle 파일이 굉장히 많아지게 되서 관리하는데 어려울 수가 있다. 또한 전체적인 프로젝트 구조를 파악할때 어려움이 있을거 같다.

그럼에도 규모가 큰 프로젝트일 수록 빛을 바라는 구조이며 코드의 재사용성을 높혀주고 의존성을 낮춰주는 것에 큰 매력이 있는 것 같다.

출처
https://leveloper.tistory.com/201

profile
주니어 안드로이드 개발자

0개의 댓글