[android] 멀티 모듈 구조란?

멀티 모듈 구조란?

모듈을 하나의 내부 라이브러리로 생각하시면 이해하기 쉬울 것입니다. 단일 모듈에서 일종의 기능 묶음을 라이브러리로 분리한 것이 멀티 모듈입니다. 다음과 같이 gradle 파일에 추가함으로써 모듈에 대한 의존성을 만들 수 있습니다.

implementation project(path: ':model')

모듈 추가와 종류

File>New>New Module 클릭 후 종류에 맞게 선택

application: 우리와 가장 친숙한 모듈입니다. 빌드의 결과로 .apk 파일을 생성합니다. 위에서 말한 것처럼 프로젝트를 생성할 때 자동으로 생성되며, 앱을 실행하기 위해선 하나 이상의 application 모듈이 필요합니다.

java/kotlin-library: 순수한 자바/코틀린 코드로 이루어진 모듈을 만들 때 사용합니다. 안드로이드 프레임워크로부터 독립적인 기능을 담고 싶을 때 사용합니다.

android-library: 자바 모듈과 다르게 안드로이드와 관련이 깊습니다. 그래서 AppCompatActivity, Context와 같은 안드로이드 객체에 접근할 수 있습니다.

단일 모듈과 차이

  1. 단축된 빌드 시간 — 위에서 말한 것처럼 변경된 모듈만 빌드하기 때문에 빌드 시간을 줄일 수 있습니다.
  2. 분리된 자원과 코드 — 단일 모듈에선 대부분의 자원과 코드에 대해서 제약 없이 접근할 수 있는 특징이 있었습니다. 하지만 모듈은 하나의 라이브러리입니다. 의존성을 추가해주지 않으면 해당 모듈의 자원과 코드에 접근할 수 없습니다. 각각의 모듈은 자신의 관심사에 대한 문제를 해결합니다. 아래는 그림으로 표현한 모습입니다.

— Reference

https://www.youtube.com/watch?v=H4qh0n9Zu5k (droidknight 콴다)