Android

Android 프로젝트를 Multi Module 로 구성해보자.

최데브 2022. 2. 10. 01:51

Awiki라는 모바일 위키 작성 개인 프로젝트를 하면서 html 관련 라이브러리를 쓸 일이 있었는데 

그때 라이브러리를 모듈로 받아와서 써본 경험이 있어서 대충 어떤 개념인지는 알겠지만 직접 멀티 모듈로 만들어 본 적이 없어서 이번 기회에 정리 해보려한다.

 


먼저 Multi Module 로 굳이 만드는 이유가 뭘까?

그냥 원래 만들던대로 app Module에 전부 넣어서 만들면 되는거 아닐까?

맞다 사실 그래도 문제는 없다.

 

하지만 그건 혼자 프로젝트를 할 때 이야기다. 

준비가 되어있지 않은 상황에서 새로운 인원이 프로젝트에 투입되어 의존성 규칙을 잘 지키면서 구조화된 기능을 구현하기에는 어려 어려움을 겪게 될 것이다. 그리고 따라오는 오류는 덤일테고.

 

모듈은 간단히 소스파일과 빌드설정으로 구성된 모음인데 내가 머릿속에서 이해하는 느낌으로는

앱내에서만 사용되는 외부 라이브러리..? 라는 느낌으로 생각하고 있다. 엄밀하게 따지만 완전 다른 느낌이겠지만

 

그럼 좀 더 와닿게 멀티 모듈을 쓰는 이유에 대해 생각해보자.

 


위에서도 말한 것처럼 다수의 개발자가 개발에 참여하고 프로젝트가 커지게 되면 여러 문제가 발생 할 수 있는데

 

첫 번째로 의존성이 높아질 수 있다.

 

프로젝트를 진행하며 위의 사진과 같이 MVVM 패턴에 맞게 의존성 규칙을 정했다고 가정하자.

ViewModel에서는 Repository를 통해 데이터를 가져오고, Repository에서는 데이터베이스에 접근해서 데이터를 가져온다는 등의 규칙이 일반적인데  app 모듈 안에서 모든 기능을 구현하는 프로젝트에서는 규칙을 위반하는 실수가 나오기 쉽다. 예를 들면, Activity에서 데이터베이스 인스턴스에 접근하여 데이터를 가져올 수 있다던가. 이는 개발자의 실수이지만 하나의 모듈로 프로젝트가 구성되어 있기 때문에 모든 코드에 접근할 수 있어서 생기는 문제다.

관심사를 분리하기 위해선 의존성 규칙을 잘 지켜주어야한다. 멀티 모듈 프로젝트에서는 build.gradle 파일에 사용할 모듈의 의존성을 직접 추가해줌으로써 사용하지 않는 모듈들은 접근조차 할 수 없게 해주기 때문에 이런 문제를 미리 방지 할 수 있게된다.



두 번째로 빌드 속도가 빨라진다.

 

프로젝트를 빌드할 때 변경된 모듈만 빌드하기 때문에 모듈이 많으면 빌드 시간이 단축된다고 한다.

물론 관리할게 많아지니까 손이 많이가는건 사실일거다.

 

세 번째로 코드를 재사용하기 편해진다.

모듈화를 해두면 특히 UI 같은 경우는 한곳에서 다 불러다 쓰면 되기 때문에 수정사항이 생겨도

모듈쪽만 수정해주면 아주 편하게 수정이 가능해진다.

 

buildSrc , Kotiln dsl , 멀티모듈을 함께 사용한 깃허브 링크를 남긴다.

 

https://github.com/supremehyo/MultiModuleTest

 

GitHub - supremehyo/MultiModuleTest: 멀티모듈과 buildSrc , Kotiln dsl 을 적용한 프로젝트 구성 연습입니다.

멀티모듈과 buildSrc , Kotiln dsl 을 적용한 프로젝트 구성 연습입니다. Contribute to supremehyo/MultiModuleTest development by creating an account on GitHub.

github.com

 

 

 

 

반응형