Android 빌드 성능

문제 신고 <ph type="x-smartling-placeholder"></ph> 소스 보기 1박 · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

이 페이지에는 Android의 빌드 성능을 최적화하는 방법에 관한 정보가 포함되어 있습니다. 있습니다. Bazel을 사용한 일반적인 빌드 성능 최적화에 대해서는 다음을 참조하세요. 실적 최적화.

플래그는 bazelrc 구성 구문, bazelrc 파일에 직접 붙여넣고 명령줄에서 --config=<configuration_name>를 실행합니다.

프로파일링 성능

Bazel은 기본적으로 JSON 트레이스 프로필을 Bazel의 출력 베이스에 있는 command.profile.gz 자세한 내용은 JSON 프로필 문서를 참고하세요. 프로필 읽고 사용하는 방법

Android 빌드 작업의 영구 작업자.

Android 빌드 작업의 하위 집합은 영구 작업자를 사용합니다.

이러한 액션은 니모닉은 다음과 같습니다.

  • DexBuilder
  • 자바크어
  • 디슈가
  • AaptPackage
  • AndroidResourceParser
  • AndroidResourceValidator
  • AndroidResourceCompiler
  • RClassGenerator
  • AndroidResourceLink
  • AndroidAapt2
  • AndroidAssetMerger
  • AndroidResourceMerger
  • AndroidCompiledResourceMerger

작업자를 사용 설정하면 JVM 비용을 절감하여 빌드 성능을 높일 수 있습니다. 이러한 툴을 호출할 때 시작 비용이 클 수 있지만 메모리 사용량을 줄일 수 있습니다

이러한 작업에 작업자를 사용 설정하려면 다음과 함께 이러한 플래그를 적용합니다. 명령줄에서 --config=android_workers을 실행합니다.

build:android_workers --strategy=DexBuilder=worker
build:android_workers --strategy=Javac=worker
build:android_workers --strategy=Desugar=worker

# A wrapper flag for these resource processing actions:
# - AndroidResourceParser
# - AndroidResourceValidator
# - AndroidResourceCompiler
# - RClassGenerator
# - AndroidResourceLink
# - AndroidAapt2
# - AndroidAssetMerger
# - AndroidResourceMerger
# - AndroidCompiledResourceMerger
build:android_workers --persistent_android_resource_processor

작업당 생성되는 기본 영구 작업자 수는 4개입니다. Google은 개선된 빌드 성능을 각 작업의 인스턴스 수를 1 또는 2로 제한합니다. Bazel이 실행 중인 시스템 및 실행 중인 프로젝트에 따라 다를 수 있습니다 빌드되었습니다.

작업의 인스턴스 수를 제한하려면 다음 플래그를 적용합니다.

build:android_workers --worker_max_instances=DexBuilder=2
build:android_workers --worker_max_instances=Javac=2
build:android_workers --worker_max_instances=Desugar=2
build:android_workers --worker_max_instances=AaptPackage=2
# .. and so on for each action you're interested in.

AAPT2 사용

aapt2 개선사항 aapt보다 작은 APK를 만듭니다. aapt2를 사용하려면 --android_aapt=aapt2 플래그를 지정하거나 다음의 aapt_version에서 aapt2를 설정합니다. android_binaryandroid_local_test

SSD 최적화

--experimental_multi_threaded_digest 플래그는 다이제스트를 최적화하는 데 유용합니다. 훨씬 더 강력해졌습니다