#Gradle이란?
안드로이드 스튜디오를 통해 개발을 하게 되면 좌측 프로젝트 구성목록에 Gradle이라는 것을 쉽게 찾아볼 수 있다.
Gradle은 간단하게 말하자면 빌드 시스템이다. 조금 더 설명하자면 모듈의 빌드방법이 정의된 빌드스크립트이다. 그렇다면 이 빌드시스템은 왜 필요할까?
안드로이드 개발을 하다보면 여러 라이브러리를 사용하게 된다. 라이브러리를 곁들인 개발은 효율성 측면에서 바라보자면 의무적으로 필요하다. 이전까지는 라이브러리를 사용하기 위해서는 .jar 파일을 다운로드받아 따로 설정해주는 작업을 진행해야했다.
#Gradle의 필요성
시간이 지남에 따라 다양한 라이브러리가 생겨나고 이러한 것들을 일일이 다운로드받아 작업하기에는 개발자에게 있어 많은 피로감을 주게 된다. 그렇기에 라이브러리를 자동으로 관리해줄 수 있는 도구인 Gradle, Maven, Ant들이 등장하기 시작했다. 또 라이브러리만을 관리해주는 것이 아니라 빌드, 테스트, 배포, 개발등을 자동화할 수 있다.
#Gradle의 장,단점
Ant, Maven, Gradle 각 빌드 툴마다 장단점이 존재한다. 이러한 와중에 안드로이드 스튜디오에서는 Gradle를 채택해서 사용하는 것이다. Gradle이 갖고있는 장점이 무엇이기에 채택해서 사용했을까? Ant와 Maven이 갖고 있었던 자유도, 관례등의 장점들을 흡수한 것뿐만 아니라 이들이 갖고 있는 단점 중 하나인 XML에 대한 이슈를 Groovy언어를 이용해 해결했기 때문이다. XML로는 정적빌드만을 할 수 있는 반면 Groovy 언어를 사용하게 되면서 이전보다 유연하고 다양한 구현이 가능해진것은 물론, 동적 빌드까지 가능해졌다.
Gradle은 이렇게 파워풀한 장점을 지녔지만 단점또한 존재한다. Maven보다 컴파일, 빌드속도가 느리다는 점과 자신이 지정한 것보다 높은 버전의 라이브러리를 받아오는 현상이 발생한다는 점이다.
#Android Studio에서의 Gradle
실제적으로 안드로이드 스튜디오 개발툴에서 gradle은 어떻게 위치해있는지 조금 더 자세히 둘러보고자 한다. 안드로이드 스튜디오에서 Gradle은 크게 3개로 나뉘어 있다.
Gradle 설정파일인 settings.gradle과 최상위 빌드 파일인 build.gradle(project: project name), 그리고 모듈 레벨 빌드파일인 (Module: app)이다.
Gradle 설정파일은 앱을 빌드할 때 어떤 모듈을 포함해야할지를 Gradle에 알려주는 역할을 한다.
최상위 빌드파일인 build.gradle(project: project name)은 파일 구조로 들여다보면 루트 프로젝트 디렉토리의 최상위에 존재한다. 이 build.gradle 파일은 모든 모듈에 적용되는 빌드 구성을 정의한다.
그리고 모듈레벨 빌드파일은 build gradle(module: app)은 이 파일이 위치하는 특정 모듈의 빌드 설정을 구성할 수 있다. 타겟 sdk 버전등의 설정이나 이 파일에 사용할 라이브러리의 의존성을 구성한다.
참고사이트:
https://developer.android.com/studio/build/?hl=ko
http://blog-joowon.tistory.com/1
https://www.slideshare.net/sup2rior/gradle-guide-v-01-31412469
'▶개발 > Android' 카테고리의 다른 글
[Android] Dialog Message 기본 만들기 (0) | 2018.07.11 |
---|---|
안드로이드의 정확한 UI 표현 레이아웃 ScalableLayout (0) | 2018.07.03 |
[에러해결]Error: is not a valid file-based resource name character: File-based resource names must contain only lowercase a-z, 0-9, or underscore (0) | 2018.05.25 |
안드로이드 개발, 자바와 코틀린 차이는? (0) | 2018.05.16 |
[안드로이드 오류해결] No system resource manager for module: app (0) | 2018.05.10 |