7. 모듈?
모듈은 소스 파일 및 빌드 설정으로 구성된 모음이며, 이를 통해 프로젝트를
별개의 기능 단위로 분할할 수 있습니다. 프로젝트에는 하나 이상의 모듈이 포
함될 수 있으며, 하나의 모듈이 다른 모듈을 종속성으로 사용할 수 있습니다.
각 모듈은 개별적으로 빌드, 테스트 및 디버그할 수 있습니다.
Module
40. 장점
콴다 앱 빌드 속도 비교
7개 모듈일 때 하나의 모듈일 때VS
1회 : 4 m 33 s 126 ms
2회 : 2 m 1 s 897 ms
3회 :4 m 31 s 595 ms
4회 : 3 m 53 s 517 ms
5회 : 3 m 39 s 703 ms
41. 장점
콴다 앱 빌드 속도 비교
7개 모듈일 때 하나의 모듈일 때VS
1회 : 4 m 33 s 126 ms
2회 : 2 m 1 s 897 ms
3회 :4 m 31 s 595 ms
4회 : 3 m 53 s 517 ms
5회 : 3 m 39 s 703 ms
42. 장점
어떤 앱 빌드 속도 비교
app app
app2 app3
15000개의 클래스 1개의 앱 모듈 + 2개 라이브러리
각각 5000개의 클래스
43. 장점
어떤 앱 빌드 속도 비교
3개 모듈일 때하나의 모듈일 때 VS
1분 10초
1) 변경이 앱에서만 이뤄지는 경우
35초
2) 변경이 라이브러리에 이뤄지는 경우
1분 50초
44. 장점
어떤 앱 빌드 속도 비교
app
app2 app3
Debug app 빌드해도,
app2의 debug/release를 둘 다 빌드하여 빌드시간이 오래 걸림!
Debug
Release
Debug
Release
수정된 것
45. 장점
어떤 앱 빌드 속도 비교
3개 모듈일 때하나의 모듈일 때 VS
1분 10초
1) 변경이 앱에서만 이뤄지는 경우
35초
2) 변경이 라이브러리에 이뤄지는 경우
1분 50초
5개 모듈일 때
1) 변경이 앱에서만 이뤄지는 경우
24초
2) 변경이 라이브러리에 이뤄지는 경우
50초
VS
46. 단점
1. 모듈간의 종속성이 복잡해지고, 모듈의 수정이 많다면
오히려 빌드시간을 증가시킬 수 있음.
2. ButterKnife, Dagger같은 AnnotationProcessor를
사용하는 경우, 빌드 시간이 더 오래 걸림.
3. 하나의 앱 기준으로는 코드량이 더 많게 느껴짐
4. 해당 프로젝트를 처음 보면 코드 전체를 보기 어려움
47. 결론
1. 두 개 이상의 앱을 서비스하고 있거나
2. 여러 개의 앱으로 분리될 경우를 대비하고 싶은 경우
잘 변하지 않는 기능/독립적으로 구성가능한 기능을
모듈화 해보자