Gradle
자동화된 컴파일/빌드/실행 시스템. 그래들은 빌드 구성 파일들을 통해 프로젝트 빌드가 구성되고 관리되게 해준다. 따라서 프로젝트를 빌드하는 방법, 빌드에 필요한 모듈간의 의존 관계 같은 내용들이 정의된다.
그루비(Groovy) 언어 기반의 스크립트로 선언된다.
장점
- 유연성
- 플러그인을 사용하여 (안드로이드 스튜디오 같은)다른 환경에 통합될 수 있다.
특징
- 합리적인 디폴트
그래들은 사전 정의된 합리적인 디폴트 구성 설정들을 가지고 있다. 개발자가 따로 빌드 설정을 주지 않아도 합리적으로 설정된 디폴드 값을 사용하여 빌드가 수행될 수 있다.
- 의존 관계
프로젝트의 모듈 A가 모듈 B에 의존하고 있다면, 이 의존 관계를 프로젝트 빌더에 알려야 한다. 프로젝트에 필요한 라이브러리와 JAR 파일도 마찬가지로 알려줘야 한다. 그래들은 이런 의존 관계 정보도 포함하고 있다.
안드로이드 스튜디오의 gradle 구조는 다음과 같다.
1. build.gradle(Project: 프로젝트 이름)
최상위 그래들 빌드 파일.
2. build.gradle(Module: 프로젝트 이름)
각 모듈은 자신의 그래들 빌드 파일을 필요로 하는데, 각 빌드 파일들은 개발 컴퓨터의 실제 디렉터리 구조에서 프로젝트명/모듈명/build.gradle에 위치한다.
3. settings.gradle
메이븐(Maven)
그래들의 의존 관계는 로컬과 원격으로 분류할 수 있다.
* 로컬: 빌드가 수행되는 컴퓨터 시스템의 로컬 파일 시스템에 있는 모듈 관계
* 원격: 리포지터리라고 하는 원격 서버에 있는 모듈을 참조하는 것.
안드로이드 스튜디오 프로젝트의 경우 원격 의존 관계는 메이븐이라는 또 다른 프로젝트 관리 도구를 사용해서 처리된다. 만약 메이븐 구문을 사용해서 그래들 빌드 파일에 원격 의존 관계가 선언되면, 지정된 리포지터리로부터 의존 관계가 있는 파일들이 자동으로 다운로드되어 빌드 프로세스에 포함된다.
4. ProGuard
안드로이드 스튜디오에 포함된 도구. 자바 바이트 코드를 최적화하고 크기를 줄여서 더 효율적으로 만든다. 또한 역공학으로 소스 코드를 해독하기 어렵게 해준다. 어플리케이션이 빌드될 때 proguard를 실행할 것인지 그래들 빌드 파일에서 제어할 수 있다.