시배's Android

Android | Build Optimization (2) 본문

Android

Android | Build Optimization (2)

si8ae 2024. 10. 4. 19:36

Gradle 옵션을 활용한 Build Optimization

대규모 Android 프로젝트에서 빌드 시간이 느려지는 것은 큰 생산성 저하를 야기할 수 있습니다. 이 문제를 해결하기 위해, Gradle은 다양한 빌드 최적화 옵션을 제공하고 있으며, 이를 적절히 활용하면 빌드 시간을 크게 단축할 수 있습니다. 이번 포스트에서는 Gradle 옵션을 통해 실제로 빌드 시간을 얼마나 줄일 수 있는지 그 과정을 공유하고, 각 옵션에 대해 설명하겠습니다.

기본 환경에서의 빌드 시간

우선, 아무 옵션도 적용하지 않은 기본 프로젝트 환경에서의 빌드 시간을 측정했습니다.

  • Clean Build -> Build APK
    결과: 1분 52초
    처음에는 기본적인 clean 빌드를 수행했으며, 상당히 긴 시간이 소요되는 것을 확인했습니다.

이제 Gradle 최적화 옵션을 하나씩 적용해 보며, 빌드 시간을 얼마나 줄일 수 있는지 확인해보겠습니다.

org.gradle.parallel=true 옵션

org.gradle.parallel=true 옵션을 활성화하면 Gradle은 가능한 경우 여러 작업을 병렬로 실행합니다. 특히 멀티모듈 프로젝트에서 각 모듈의 독립적인 작업들이 병렬로 수행되면서 빌드 시간이 단축될 수 있습니다.

  • 적용 방법
    프로젝트의 gradle.properties 파일에 다음을 추가합니다:
org.gradle.parallel=true
  • 빌드 결과
    결과: 1분 26초
    빌드 시간이 약 26초 단축되었습니다. 이는 Gradle이 여러 모듈을 동시에 빌드하면서 빌드 과정의 효율성을 높였기 때문입니다. 이 때, Gradle Configuration 시간은 약 11초가 소요되었습니다.

org.gradle.unsafe.configuration-cache=true 옵션

org.gradle.unsafe.configuration-cache=true 옵션은 Gradle 빌드의 구성 단계(configuration phase)를 캐시하여, 동일한 설정의 빌드를 다시 할 때 빌드 구성을 재활용할 수 있게 합니다. 이를 통해 구성 단계에 소요되는 시간을 절감할 수 있습니다.

  • 적용 방법
    프로젝트의 gradle.properties 파일에 다음을 추가합니다:
org.gradle.parallel=true
org.gradle.unsafe.configuration-cache=true

 

  • 빌드 결과
    결과: 1분 20초
    빌드 시간이 더 줄었으며, 구성 단계 시간도 7초로 줄어들었습니다. Configuration Cache 덕분에, 동일한 빌드를 여러 번 반복할 때 빌드 구성을 캐시에서 재사용함으로써 불필요한 설정 작업이 생략됩니다.

 


org.gradle.caching=true 옵션과 로컬 빌드 캐시

org.gradle.caching=true 옵션은 작업 결과물(output)을 캐싱하여, 동일한 입력에 대해 동일한 출력이 요구될 때 캐시된 결과를 재사용하도록 합니다. 특히 코드 변경이 없는 상태에서 동일한 작업을 다시 실행할 때 큰 효과를 볼 수 있습니다.

추가적으로 로컬 캐시를 활용하면, 이전 빌드 결과를 로컬 디스크에 저장하여 더 빠른 빌드가 가능합니다.

  • 적용 방법
    프로젝트의 gradle.properties 파일에 다음을 추가합니다:
org.gradle.parallel=true
org.gradle.unsafe.configuration-cache=true
org.gradle.caching=true

     프로젝트의 setting.gradle.properties 파일에 다음을 추가합니다:

buildCache {
    local {
        isEnabled = true
        directory = File(rootDir, "build-cache")
        removeUnusedEntriesAfterDays = 30
    }
}

 

  • 빌드 결과
    결과: 20초
    로컬 캐싱 덕분에 빌드 시간이 20초로 크게 단축되었습니다. 이 옵션은 특히 clean 빌드 이후 변경이 거의 없는 상태에서 빌드를 반복할 때 매우 유용합니다. 빌드가 완료되면 Gradle은 빌드 결과를 캐시에 저장하고, 이후 동일한 작업에 대해 캐시된 결과를 재사용함으로써 빌드 시간이 비약적으로 단축됩니다.