상세 컨텐츠

본문 제목

모듈화로 안드로이드 빌드 시간 줄이기

커리어피드 정보

by 더팀스 2020. 2. 7. 09:01

본문

레이니스트(뱅크샐러드)에서 발행한 모듈화로 안드로이드 빌드 시간 줄이기


안녕하세요? 레이니스트에서 소프트웨어 엔지니어로 근무하고있는 강성훈입니다. 레이니스트의 안드로이드 개발팀은 Android Weekly를 구독하면서 팀원들끼리 Android에 관련된 정보를 공유하고, 기술 트렌드를 파악하고 있습니다.

여느때와 같이 Android Weekly를 팀원들과 함께 보고있는데, 모듈화가 안드로이드 앱 빌드시간에 어떻게 영향을 끼치는가 라는 글이 눈에 띄었습니다. 개발중인 앱의 프로젝트 크기가 늘어나면서, 빌드시간도 그에 비례해서 증가하게 되었는데, 이번 기회에 위 글을 참고하면서 모듈화를 도입해 빌드시간을 줄여서 비효율을 줄여보기로 결정했습니다.

시작하기에 앞서, 현재 뱅크샐러드 코드베이스의 구조에 대해서 소개드리면 아래와 같이 총 6개의 패키지로 나뉘어져 있습니다.

빌드 속도를 줄이는것도 중요하지만, 지금의 패키지 구조가 저희가 추구하는 아키텍쳐에 가장 적합한 구성이기에 최대한 기존의 패키지 구조를 유지하며 모듈화를 진행하기로 결정했습니다.

gradle 커맨드에 --profile 옵션을 주게 되면 빌드 폴더 내에 Gradle Build Report가 다음과 같이 생성되는데요, 각각의 Task에 소요된 시간을 확인할 수 있습니다.

먼저, 모듈을 나누지 않고 빌드 시간을 총 5번 측정했을 때 다음과 같은 결과가 나왔습니다.

기존의 패키지 구조 그대로

총 6개의 모듈로 나누기를 시도를 했고, 안에서부터 바깥(entity layer -> presentation layer)으로 모듈화를 진행해 보았습니다.

가장 먼저 다른 패키지에 의존성이 없는 entity 패키지를 모듈로 추출하기로 결정했습니다. Android Studio에서 모듈을 생성하고, 기존의 entity 패키지를 생성한 모듈로 이동시켰는데, 빌드에 실패했습니다. 그 이유는 바로 Proguard 때문이었는데요, Gradle은 각 모듈별로 난독화를 하는데, Entity는 모듈 내에서 자체적으로 사용되지 않았기 때문에 사용하지 않는 Class들이 빌드 결과물에 포함되지 않아 IOException이 발생하여 app모듈 빌드에 실패했습니다.

...

더 읽어보러 가기

직군 정보
안드로이드

기업 문화 정보


기술 스택 정보
Android SDK

더 많은 내용은 더팀스에서 확인하세요!

관련글 더보기