모듈은 소스 파일 및 빌드 설정으로 구성된 모음이며, 이를 통해 프로젝트를 별개의 기능 단위로 분할할 수 있다.
프로젝트에서 하나 이상의 모듈이 포함될 수 있으며, 하나의 모듈이 다른 모듈을 종속성으로 사용할 수 있습니다. 각 모듈은 개별적으로 빌드, 테스트 및 디버그 할 수 있다.
안드로이드 프로젝트를 만들면 자동으로 생성되는 app도 모듈의 한 종류.
의존성을 줄일 수 있다. (관심사 분리)
기존의 단일 모듈 방식에서는 실수로 의존성 규칙을 위반할 수 있지만
멀티 모듈 방식을 사용하면 build.gradle 파일에서 의존성을 추가하지 않으면
다른 모듈의 코드를 사용할 수 없기 때문에 의존성 규칙을 쉽게 관리 가능.
빌드 시간 감소를 기대할 수 있다.
기본적으로 빌드를 할때 변경된 모듈만 빌드하므로 빌드 시간 감소를 기대할 수 있다.
하지만 모듈간 종속성이 복잡해지고 모듈의 수정이 많다면 빌드 시간이 증가될 수 있다.
코드 재사용성이 높아진다.
레이어별, 기능별로 모듈을 나눠서 코드를 작성하게되면 해당 기능이 필요할때
해당 모듈에 대한 의존성을 추가해서 사용하면 되기 때문에 재사용성이 높아진다.
모듈 단위 테스트를 할 수 있다.
멀티 모듈을 사용하게되면 build.gradle 파일이 여러개 생긴다.
gradle == 빌드 도구(build tool)
빌드도구는 빌드의 모든 과정(컴파일, 테스트, 배포, 문서화 등의 작업을 포함하는 절차)을 자동으로 처리할 수 있도록 도와주는 것이다. 즉 개발을 좀 더 쉽게 할 수 있도록 도움을 준다! 빌드 도구 중 하나가 Gradle이다.
Gradle에서 사용되는 언어로는 그루비 기반의 gradle dsl(Domain-Specific Languages, 도메인 특화 언어)를 사용한다.settings.gradle 파일과 build.gradle 파일의 차이
settings.gradle
: 프로젝트의 구성 정보를 기록하는 파일이다.
어떤 하위 프로젝트들이 어떤 관계로 구성되어 있는지를 기술하면 된다.
build.gradle
: 의존성이나 플러그인 설정 등을 하는 파일이다.
빌드 작업에 필요한 기본 설정, 동작 등을 기술하면 된다.
여러개의 build.gradle에서 공통적으로 사용할 변수를 쓴다거나, dependency들의 버전을 통일하고자 할 때 사용할 수 있는 방법들은 여러가지가 있다.
https://brunch.co.kr/@purpledev/43
https://velog.io/@dabin/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EB%A9%80%ED%8B%B0%EB%AA%A8%EB%93%88
https://hhyeok1026.tistory.com/38
https://velog.io/@7lo9ve3/gradle
https://brunch.co.kr/@oemilk/221