안드로이드 개발을 하다가 작게는 의존성을 추가, 때로는 오류를 해결하기 위해 gradle scripts를 수정한 적이 수도 없이 많다. 지금까지는 어떤 의미인지 정확히 모르고 단순히 코드만 추가했지만 이제는 gradle이 뭔지 공부하고 제대로 사용해보려 한다.
Gradle은 빌드 자동화 시스템으로 현재 안드로이드 스튜디오의 공식 빌드 시스템이다. 소스코드를 작성하면 그 코드는 컴파일, 빌드의 과정을 거치면서 실행 가능한 산출물이 되는데 (빌드 과정 중 컴파일이 포함되어 있다.) 빌드를 할 수 있는 툴 중 하나가 Gradle이다. Ant, Maven 등과 비슷한 역할을 하지만 Ant와 Maven에 비해 간결하고 빠른 처리 속도를 가지고 있어 최근 점유율이 높아지고 있다.
안드로이드 스튜디오에서 Gradle을 구성하고 있는 파일에 대해서 간략하게 살펴보면 이렇다.
build.gradle
의존성이나 플러그인 설정 등을 위한 스크립트 파일로 dependencies에서 사용할 외부 라이브러리를 설정할 수 있다. 또한 repositories를 통해 의존성을 가져올 주소를 설정한다.
여기서 mavenCentral은 기존 Maven repository를 말한다. 다음과 같이 build.gradle에 의존성 등의 다양한 설정을 해서 편리하게 빌드가 가능하다. buildscript는 자체를 빌드하는 과정에서 외부 라이브버리를 클래스 패스에 추가하는 기능을 한다. 클래스 패스를 선언하면서 이들을 컴파일하고 실행할 수 있다.
settings.gradle
해당 파일은 프로젝트가 어떻게 구성되어 있는지를 기록하는 파일이다. gradle은 멀티 프로젝트를 빌드할 수 있게 지원하는데 이러한 정보들이 포함되어 있는 파일이 바로 settings.gradle이다. rootProject.name 을 이용하여 최상위 프로젝트 이름을 설정하고 (기본적으로 프로젝트 폴더 이름이 여기에 들어간다.) 하위 프로젝트를 include를 통해 포함할 수 있다.
gradle-wrapper.properties
해당 파일은 아직 정확하게 이해하지 못했다. gradle을 설치 없이 사용할 수 있게 하는 gradle wrapper과 관련이 있는 파일이라고 생각된다. gradle의 장점 중 하나가 wrapper를 사용하면 설치과정 없이 이미 존재하는 프로젝트를 새로운 환경에서 빌드할 수 있게 한다는 것이다. 이와 관련해서는 더 공부하고 추가하도록 하겠다.
지금까지 gradle을 완전히 이해하지 못하고 단순히 의존성을 설정하는 파일로만 생각했는데, 빌드 툴의 종류도 많았고 그 과정도 꽤 복잡했다. 프로젝트의 빌드를 돕는 툴이라는 기본적인 상식을 가지고 더 공부하면서 채워나가겠다.
'Android 공부' 카테고리의 다른 글
6. 안드로이드 context (0) | 2023.01.08 |
---|---|
5. 안드로이드 Singleton 패턴 (0) | 2023.01.06 |
4. 안드로이드 Activity - 생명주기 (1) | 2023.01.06 |
3. 안드로이드 기본 구성요소 (0) | 2023.01.03 |
2. 비정상 종료와 ANR (0) | 2022.12.29 |