[Gradle] 1. Gradle이란?

0
post-thumbnail

해당 주제는 삼치 스터디(최애 스터디) 에서 다뤘습니다.

Gradle 이란?


Gradle은 CI/CD를 위한 아래 Task들을 자동화 시켜주는 Build Tool 입니다 .

  • Compile -> 자바나 코틀린을 Byte Code로 변환
  • Test -> Unit Test, Android Test
  • Packaging -> 패키징해서 APK , AAB로 변환
  • Deploy& Run -> 어플리케이션으로 패키징하여, 실제 기기에 넣어 실행

Android의 공식 Tool로 지정되었으며, groovy가 아닌 Kotlin DSL으로도 바꿔 사용할 수 있습니다.

Gradle vs Maven


보통 Gradle과 Maven을 많이 비교합니다.

Gradle은 Maven과 Ant의 장점을 모아 만들어서 Maven보다 최대 100배정도의 빠른 속도를 갖고 있습니다.

또한 Maven보다 직관적인 문법 을 갖고있습니다.

maven
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>2.2.4.RELEASE</version>
</dependency>

gradle
    implementation 'androidx.core:core-ktx:1.7.0'
    implementation 'androidx.appcompat:appcompat:1.4.1'

왜 이렇게 차이가 나는지, Gradle에는 어떤 기능이 있는지 좀더 Deep 하게 들어가 봅시다!

점진적 빌드 기능 (Incremetal Build)

빌드된 파일에서, 재빌드가 아닌, 바뀐 파일만 빌드하는것을 의미합니다.
10개중, 5개 파일이 바뀌었을경우, 5개만 리컴파일을 실행합니다.

빌드 캐시 (Build Cache)

Gradle은 빌드 캐시를 사용하여 동일한 Android 플러그인이 생성하는 특정 출력(예: 패키지 해제된 AAR 및 사전 덱싱 원격 종속 항목)을 재사용합니다.

이를 통해 빠른 빌드가 가능합니다.

Daemon Process

Daemon Processs는 서비스의 요청에 응답하기 위해 오랫동안 살아있는 프로세스를 말합니다.
Daemon Processs는 메모리상에 빌드 결과물을 보관하는데요.
첫 빌드에선 오랜시간이 걸려도, 다음 빌드에서 매우 적은 시간만 소요됩니다.

다양한 Scope 제공 (Configuration)

Gradle은 다양한 Scope를 제공합니다.

  • implementation -> 해당 모듈을 가져오되, 의존하는 모듈은 가져오지 않는다.
  • api -> 해당 모듈과 의존하는 모듈도 가져온다(중복 일어나기 때문에 유지보수성 측면에서 좋지 않다)
  • debugImplementation -> 디버그일때만 사용되며, release모드시, 해당 모듈은 제거됩니다.
  • releaseImplementation -> 릴리즈일때만 사용되며, debug모드시, 해당 모듈은 제거됩니다.
  • testImplementation -> Test에만 사용되는 모듈입니다.
  • androidTestImplementation -> AnroidTest에만 사용되는 모듈입니다.

외, complieOnly, runtimeOnly 등이 있습니다.

해당 Scope를 사용하면서, 상황에 맞게 모듈을 가져올 수 있습니다.



긴글 읽어주셔서 감사합니다.

왜 한번 빌드 후, 속도가 빨랐는지 알게된것 같습니다.


참고

Gradle이란 무엇인가?

[Android] 줄인다! Gradle 빌드 시간! 살린다! 내 생산성!

빌드 캐시로 클린 빌드 가속화

안드로이드 개발자를 혼란스럽게 만드는 Gradle의 5가지 요소

profile
쉽게 가르칠수 있도록 노력하자

0개의 댓글