Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

빌드 성능 문제 해결

Android Gradle 플러그인 4.0.0 이상이 설치된 Android 스튜디오 4.0 이상에서는 빌드 분석 도구를 사용하여 프로젝트의 빌드 성능을 검사할 수 있습니다. 빌드 성능은 빌드 간에 변경될 수 있는 여러 다양한 요소의 영향을 받을 수 있습니다. 빌드 분석 도구는 개발자가 실행하는 각 빌드에 관한 가장 중요한 정보를 제공하려고 하므로 빌드 성능에서 회귀를 빠르게 식별하고 해결할 수 있습니다.

이 페이지에서는 빌드 분석 도구를 간략히 설명하고 도구를 사용하여 프로젝트의 빌드 성능을 개선하는 방법을 안내합니다. 아직 이렇게 빌드 성능을 개선하지 않았다면 빌드 속도 최적화를 참조하여 빌드 성능을 개선하는 추가 전략을 시도하세요.

분석 도구에서 제공하는 데이터는 각 빌드에 따라 변경됩니다. 특히 크고 복잡한 빌드의 경우 여러 요소가 빌드 간에 변경될 수 있고 이는 분석 도구에서 빌드 기간의 중요한 요소로 개발자에게 제공하는 데이터를 변경합니다. 따라서 프로젝트를 여러 번 빌드하고 분석 도구의 데이터를 비교하여 패턴을 식별하는 것이 유용할 수 있습니다.

시작하기

앱을 빌드할 때마다 빌드 분석 도구가 보고서를 만들고 Build 창에 최신 보고서의 데이터를 표시합니다. 시작하려면 다음 단계를 따르세요.

  1. Android Gradle 플러그인 4.0.0 이상이 설치된 최신 버전의 Android 스튜디오를 사용하고 있는지 확인합니다.
  2. 아직 앱을 빌드하지 않았다면 다음 방법 중 하나로 앱을 빌드합니다.
    • 메뉴 바에서 Build > Make Project를 클릭합니다.
    • 메뉴 바에서 Build > Build Bundle(s) / APK(s) > Build Bundle(s) 또는 Build > Build Bundle(s) / APK(s) > Build APK(s)를 클릭하여 Android App Bundle이나 APK를 빌드합니다.
  3. 메뉴 바에서 View > Tool Windows > Build를 선택하여 Build 창을 엽니다.
  4. Build 창에서 Build Analyzer 탭을 클릭하여 Build Analyzer의 빌드 보고서를 확인합니다.

그림 1. 빌드 기간에 가장 큰 원인이 되는 플러그인의 분석 내용을 제공하는 빌드 분석 도구

빌드 분석 도구를 열면 그림 1과 같이 창에는 빌드 기간에 가장 큰 원인이 된 플러그인의 분석 내용과 빌드에 관한 다른 유용한 데이터를 탐색할 수 있는 트리가 표시됩니다.

빌드 분석 도구는 빌드의 모든 작업에 관한 데이터를 표시하지는 않습니다. 대신 총 빌드 기간을 결정하는 작업에만 집중합니다.

빌드 기간을 결정하는 작업은 무엇인가요?

Gradle은 작업 상호 의존성, 프로젝트 구조, CPU 로드에 따라 작업 실행을 결정하며 순차적으로 또는 동시에 작업을 실행합니다. 특정 빌드의 경우 빌드 분석 도구는 현재 빌드 기간을 결정하는 순차적으로 실행된 작업 집합을 강조표시합니다. 전체 빌드 시간을 줄이려면 강조표시된 작업의 비효율성을 해결하는 것부터 시작하는 것이 가장 좋습니다.

실행하는 빌드마다 빌드 기간을 결정하는 작업 집합이 다를 수 있다는 점에 유의하시기 바랍니다. 예를 들어 빌드 구성을 변경하거나 다른 작업 집합(예: 증분 빌드)으로 빌드를 실행하거나 다른 제약 조건(예: 과중한 CPU 로드)에서 빌드를 실행하면 Build Speed 창에서 빌드 기간에 가장 큰 영향을 미치는 다른 작업 집합이 강조표시됩니다. 이러한 변동성 때문에 여러 빌드에서 Build Speed 창을 사용하여 빌드 기간을 일관되게 줄이는 것이 좋습니다.

빌드 기간을 결정하는 작업이 포함된 플러그인

빌드를 완료한 후 처음으로 빌드 분석 도구를 열면 그림 1과 같이 빌드 기간을 결정하는 작업을 소개하는 플러그인에 관한 데이터가 창에 표시됩니다. 창 오른쪽에는 이러한 플러그인과 각 플러그인이 빌드 기간에 영향을 미친 정도를 상대적으로 분석하여 보여줍니다. 따라서 먼저 검사하려는 플러그인을 빠르게 식별할 수 있습니다.

왼쪽 창에서 Plugins with tasks determining the build’s duration 옆의 노드를 확장하여 빌드 분석 도구에서 각 플러그인과 관련해 수집한 추가 데이터를 확인할 수 있습니다. 예를 들어 각 플러그인에는 Gradle이 마지막 빌드 중에 실행한 작업과 분석 도구에서 총 빌드 기간에 중요한 것으로 간주하는 작업을 그룹화하는 하위 노드가 포함되어 있습니다. 각 노드에는 노드의 직접 하위 요소를 실행하는 데 걸린 총 시간이 표시됩니다. 이러한 기간을 통해 빌드 기간에 가장 큰 영향을 미치는 작업을 검사하는 것에 집중할 수 있습니다.

빌드 분석 도구에서 일부 작업을 더 효율적으로 실행하도록 구성할 수 있다고 확인하면 이러한 작업을 Warnings라는 라벨이 지정된 노드 아래 그룹화합니다. 왼쪽 창 하단에서 최상위 Warnings 노드를 확장하여 빌드에 관한 모든 경고를 검사할 수도 있습니다.

빌드 기간을 결정하는 작업

트리에서 Tasks determining this build’s duration 노드를 선택하면 빌드 분석 도구에서 빌드 기간에 가장 큰 영향을 미친 작업의 분석 내용을 보여줍니다. 즉, 이 노드는 작업을 플러그인별로 그룹화하지 않고 대신 실행에 걸린 시간을 기준으로 각 작업의 순위를 매깁니다.

각 작업은 다음과 같이 색상으로 구분됩니다.

  • 분홍색: 이 작업은 Android Gradle 플러그인, 자바 Gradle 플러그인 또는 Kotlin Gradle 플러그인에 속합니다.
  • 파란색: 이 작업은 타사 또는 맞춤 플러그인에 속합니다. 예를 들어 Android 스튜디오를 사용하여 새 프로젝트를 만든 후 적용한 플러그인일 수 있습니다.
  • 자주색: 이 작업은 플러그인에 속하지 않지만 런타임 시 프로젝트 속성을 동적으로 수정하는 데 사용됩니다. 예를 들어 build.gradle 파일 내에서 정의할 수 있는 작업입니다.
  • 하늘색: 분석 도구에서 강조표시한 다른 작업과 비교하여 이 작업은 빌드 기간에 큰 영향을 미치지 않습니다.

Tasks determining this build’s duration 노드를 확장한 후 각 하위 작업을 클릭하여 실행에 관해 자세히 알아볼 수 있습니다. 예를 들어 분석 도구는 상위 플러그인, 작업 유형, 이 작업의 실행을 유발한 다른 작업, 작업의 증분 실행 여부 등 추가 세부정보를 제공합니다(그림 2 참조). 분석 도구는 작업을 더 효율적으로 실행하도록 구성하는 데 도움이 되는 경고를 표시할 수도 있습니다.

그림 2. 특정 작업 실행에 관한 세부정보를 표시하는 빌드 분석 도구

경고 검사

빌드 분석 도구는 효율적으로 실행되도록 구성되지 않은 작업이 감지되면 경고를 제공합니다. 예를 들어 적절한 Gradle API를 사용하여 입력과 출력을 지정하지 않는 작업은 증분 빌드를 활용할 수 없습니다. 빌드에 이러한 작업이 포함되어 있으면 빌드 분석 도구에서 Always-run 경고를 사용하여 표시할 수 있습니다. 입력 변경 여부와 관계없이 모든 빌드에서 실행되어야 하기 때문입니다.

분석 도구에서 빌드에 관해 식별한 모든 경고를 확인하려면 최상위 Warnings 노드를 확장합니다. 노드를 확장하면 카테고리별로 그룹화된 경고를 확인할 있습니다. 예를 들어 Always-run 노드는 분석 도구에서 증분 빌드에 맞게 적절하게 구성되지 않았다고 생각하는 작업을 그룹화합니다.

하위 노드를 클릭하면 분석 도구는 경고의 특성과 문제 해결을 위해 취할 수 있는 단계를 설명합니다. 또한 작업이 프로젝트에 적용한 플러그인에 속하는 경우 그림 3과 같이 분석 도구에서 Generate report 링크를 제공합니다.

그림 3. 빌드 분석 도구 경고에 관한 자세한 정보

Generate report 링크를 클릭하면 플러그인 개발자가 새 버전의 플러그인에서 문제를 해결할 수 있는 추가 정보가 포함된 대화상자가 표시됩니다. Copy를 클릭하여 텍스트를 클립보드에 저장하면 플러그인 개발자 버그 신고에 정보를 더 쉽게 붙여넣을 수 있습니다.