메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

안드로이드를 위한 Gradle #1, 구글은 왜 그레이들을 채택했을까

2017-07-25

|

by 유동환

8,804

『안드로이드를 위한 Gradle』은 제 첫 번째 책입니다. 2016년7월 22일에 초판이 나왔으니까 어느덧 일 년이 되었네요. 일주년을 기념하여 그레이들 관한 몇 가지 이야기를 적어보고자 합니다. 주로 '왜'의 관점에서 그레이들이라는 기술을 조망해보도록 하겠습니다. 

 

 

1. 새로운 빌드 시스템의 채택 

 

33.png그레이들(Gradle)은 빌드 도구입니다. 보통 자바 이클립스에서 RUN을 누르듯이 안드로이드 앱을 개발할 때도 '빌드'는 IDE의 부속기능에 해당합니다. 개발자는 빌드 도구가 어떤 것이든 내가 원하는 APK가 만들어져서 타깃 디바이스에서 실행할 수 있으면 됩니다. 

그런데 2014년 구글은 서버 사이드에서 파워 유저들이 사용하던 그레이들을 전격 도입합니다. 2015 구글 I/O에서 기존의 ADT(Android Development Toolkit)의 지원 중단을 선언하면서 "New Build Systems"이라고 칭하며 공식 발표합니다. 그레이들은 몇 가지 면에서 기존의 빌드 시스템과 다릅니다. 

 

1) 빌드 스크립트가 '프로그래밍 언어'의 모습을 하고 있다. 

자바와 같이 JVM 위에서 동작하는 그루비(Groovy)라는 언어로 작성하게 됩니다. 

 

2) 빌드 스크립트가 일률적이지 않다. 

DSL(Domain Specific Language: 도메인 언어)라는 모습으로 서버 사이드의 그레이들 스크립트와 안드로이드를 위한 스크립트 모습이 전혀 다릅니다. 즉, 안드로이드를 위한 그레이들을 잘 안다고 해도 서버 사이드의 그레이들 스크립트는 잘 다루지 못합니다.(제가 그렇습니다^^;;) 

 

3) 다수의 빌드 지원 파일로 구성되어 있다. 

빌드면 빌드지... 

settings.gradle 

(프로젝트 수준의) build.gradle 

(모듈 수준의) build.gradle 

gradle.properties 

local.properties 

로 다수의 파일 군단을 이루고 있습니다. 기존의 빌드 시스템인 Ant의 build.xml 단일 파일과 비교하면 다소 복잡해졌습니다. 

 

 

 

2. 구글은 왜 그레이들을 채택했을까? 

구글은 왜 안드로이드 앱을 개발할 때 그레이들을 채택했을까요? 

 

concepto-arquitectura.png

 

제 생각에 가장 중요한 이유는 모듈화 개발(modular development)입니다. 예를 들어 핵심 로직을 별도의 모듈로 추출할 수 있습니다. 또한 타부서에서 제공하는 기능을 AAR로 받으면 하나의 APK로 통합할 수 있습니다. AAR은 기존의 자바 클래스의 묶음인 JAR 파일을 확장하여 안드로이드 리소스(R 파일, layout 파일 등)를 가질 수 있도록 하였습니다. 

모듈화 개발은 소스 코드로 빌드하여 통합할 수도 있고 AAR로 넣을 수도 있습니다. 당연히 기존에 활용하던 JAR 파일도 포함할 수 있습니다. 

 

두 번째는 One Source Multi APK 실현입니다. 

기존의 ADT에서는 build type이나 product flavors 같은 개념을 구현하기 어려웠습니다. 다수의 고객에게 제공하는 앱을 만드는 경우 유용하게 사용할 수 있습니다. 단, 요즘같이 마켓에 업로드하여 배포하는 경우에는 그닥 소용이 없을 듯합니다. 

 

세 번째는 라이브러리 의존성 관리입니다. 

Caseta-ABC-Modular2.png

메이븐(Maven) 세상이 되면서 앱을 개발할 때 라이브러리의 바이너리를 직접 내 프로젝트에 추가하는 것은 번거로운 일이 되었습니다. 대부분의 오픈 소스 라이브러리가 jCenter나 mavenCentral 같은 중앙 저장소에 오픈되어 있기 때문에 굳이 그것을 deep copy할 이유가 없습니다. 

그레이들을 활용할 경우 간편하게 내가 원하는 라이브러리의 패키지명과 이름 그리고 버전을 지정하면 자동으로 다운로드가 됩니다. 또한 다수의 라이브러리를 활용하는 경우 버전 충돌(version conflict)이 발생할 수 있는데 그러한 것도 그레이들이 자동으로 관리해줍니다. 

 

 

 

3. 그레이들은 장점만 있을까? 

앞에서 서술한 것과 같이 그레이들이 장점만 있는 것은 아닙니다. 제가 지금까지 현업에서 개발하면서 느낀 그레이들의 단점은 다음과 같습니다. 

 

1) 느리다. 

2) 메모리를 많이 먹는다.(최소 8GB RAM이 필요하고 16GB 권장입니다) 

3) Android Studio도 덩달아 무거워졌다. 

 

유연하고 많은 것을 편리하게 해주지만 '무거워졌다'는 느낌은 어쩔수가 없네요. 

그레이들로 빌드하게 되면 build 폴더가 생기는데 이 폴더에서 빌드 중간의 생성물을 다량으로 File I/O하게 됩니다. 아마도 그때문에 ‘그레이들이 무겁다’라고 느낄 수도 있습니다.(사실 멀티 모듈 빌드를 하는 경우 참고할 자료가 많기 때문에 사후 관리에는 유용하기도 합니다) 

 

 

NEXT 

다음 화에는 『안드로이드를 위한 Gradle』을 이루는 구성 파일들에 대해서 알아보겠습니다. 

구체적인 활용법보다는 전체적인 개념 위주로 설명드릴께요. 

 

 

저자 블로그(원본 링크) https://brunch.co.kr/@yudong/67

 

 

 

E8537768618_l.jpg

 

댓글 입력
자료실