[안드로이드] 멀티모듈

dada·2022년 4월 7일
1

Android

목록 보기
15/16
post-thumbnail
post-custom-banner

참고자료)
[DroidKnights 2019 - Track 2] 장선옥 - Android Project with Multi Module

✅공부배경

프로젝트를 하면서 앱 확장성을 고려해 "멀티 모듈"로 개발해보기로 했습니다. 저는 이전까지 모듈을 나눠서 개발해본 적이 없었습니다,,! 하지만 규모가 있는 프로젝트들은 보통 멀티모듈을 사용하기도 하고, 빌드 시간 단축, 기능 확장 등의 여러 장점이 있는 멀티모듈을 사용해보고 싶었습니다!! 모듈이 무엇인지, 라이브러리와 모듈의 차이점이 무엇인지 등의 개념부터 차근히 공부해봅시다~

✅모듈이란?

  • 모듈은 소스 파일빌드 설정으로 구성된 모음이며, 이를 통해 프로젝트를 별개의 기능 단위로 분할할 수 있습니다.

  • 프로젝트에서 하나 이상의 모듈이 포함될 수 있으며, 하나의 모듈이 다른 모듈을 종속성으로 사용할 수 있습니다. 각 모듈은 개별적으로 빌드, 테스트 및 디버그 할 수 있습니다.

  • 안드로이드 프로젝트를 만들면 자동으로 생성되는 app도 모듈의 한 종류입니다

✅모듈vs라이브러리


  • 라이브러리도 일종의 모듈입니다

  • 안드로이드 라이브러리와 모듈은 구조적으로 완전히 동일합니다! 구조적으로 동일하다는건 안드로이드 라이브러리도 앱모듈과 동일하게 자바 코틀린파일이나 drawable같은 resource파일을 포함해서, 매니페스트까지도동일하게 포함하고 있습니다

  • 차이는 뭘까?

    • 빌드시 어떤 파일로 컴파일되는지의 차이입니다.
    • 앱모듈은 apk를 빌드해주고 안드로이드 라이브러리를 빌드해보면 빌드 결과로 aar파일을 빌드해줍니다.
    • 안드로이드 스튜디오 기준으로 봣을때 점(.)이 찍혀있는폴더가 앱모듈이고, 책모양의 폴더가 안드로이드 라이브러리입니다.

✅모듈은 언제 왜, 사용하나?

  • 여러 앱을 빌드할 때, 일부 동일한 구성 요소를 재사용할 때 유용합니다.

  • 또한 앱에 새로운 기능을 추가할때 기존 코드에 기능을 추가하려면 힘이 더 들지만, 새로운 기능을 위한 모듈을 따로 만들고, demoapp 을 만들어서 테스트하면 훨씬 쉽습니다.

  • 만약 기존 앱의 domain, data 계층이 모듈화 되어있다면 기존앱의 리소스들을 그대로 가져다가 테스트할 수 있으므로 유용합니다.

✅모듈을 나눠서 개발하는 기준이 뭐에요?

(1) 이 기능이 조금이라도 다른 앱에 이용될 수 있는 가능이성이 있을때
(2) 이 기능이 잘 된다면 별도의 앱이 될 수 있다고 생각이 될때
(3) 이 기능이 너무 커서 demo가 실제 기능이 될 때 까지 오랜시간이 걸릴다고 판단될때
(4) 기존 앱이 너무 무거워서 개발할때 앱을 자주 빌드해서 확인하기 버거울 때

✅멀티 모듈의 장점

(1) 코드 재사용성이 높아진다
(2) 의존성이 적은 코드를 작성할 수 있다.
(3) 모듈 단위의 코드 수정이 용이하다.
(4) 모듈 단위 테스트를 할 수 있다.
(5) 빌드 시간 감소 가능

  • 여기서 주의할 건 빌드 시간 감소 '가능'하다는 겁니다!!
    기본적으로 빌드를 할때 변경된 모듈만 빌드하므로 빌드 시간 감소를 기대할 수 있습니다

  • 하지만! 모듈간 종속성이 복잡해지고 모듈의 수정이 많다면 빌드 시간이 증가될 수 있습니다.

✅멀티 모듈의 단점

(1) 하나의 앱만 있는데, 모듈을 여러개로 나눠놓으면 코드량이 더 많게 느껴진다.
(2) 해당 프로젝트를 처음보면 코드 전체를 보고 이해하기 어렵다.
(3) 위의 이유로 오히려 빌드 시간이 늘어날 수 있다.

따라서 두개 이상의 앱을 서비스 하고 있거나, 여러 개의 앱으로 분리될 경우를 대비하고 싶은 경우에 잘 변하지 않는 기능/독립적으로 구성 가능한 기능을 모듈화 하는게 좋습니다

profile
'왜?'라는 물음을 해결하며 마지막 개념까지 공부합니다✍
post-custom-banner

0개의 댓글