Hiệu suất bản dựng Android

Báo cáo vấn đề Xem nguồn Hằng đêm · 7.3 · 7.2 · 7.1 · 7 · 6,5

Trang này chứa thông tin về cách tối ưu hoá hiệu suất bản dựng cho Android ứng dụng. Để tối ưu hoá hiệu suất bản dựng chung bằng Bazel, hãy xem Tối ưu hoá hiệu suất.

Cờ nằm trong Cú pháp cấu hình bazelrc, vì vậy chúng có thể được dán trực tiếp vào tệp bazelrc và được gọi bằng --config=<configuration_name> trên dòng lệnh.

Hiệu suất lập hồ sơ

Theo mặc định, Bazel sẽ viết một hồ sơ theo dõi JSON cho một tệp có tên command.profile.gz trong cơ sở dữ liệu đầu ra của Bazel. Xem tài liệu về Hồ sơ JSON để cách đọc và tương tác với hồ sơ.

Trình thực thi liên tục cho các hành động tạo bản dựng Android.

Một số thao tác trong bản dựng Android hỗ trợ nhân viên bền vững.

Những hành động này ghi nhớ là:

  • DexBuilder
  • Ngôn ngữ Java
  • Đơn giản hoá
  • AaptPackage
  • AndroidResourceParser
  • AndroidResourceValidator
  • AndroidResourceCompiler
  • RClassGenerator
  • AndroidResourceLink
  • AndroidAapt2
  • AndroidAssetMerger
  • AndroidResourceMerger
  • AndroidCompiledResourceMerger

Việc cho phép các worker có thể cải thiện hiệu suất bản dựng bằng cách lưu trên JVM chi phí khởi nghiệp gọi từng công cụ này, nhưng đổi lại chi phí khởi nghiệp phải tăng mức sử dụng bộ nhớ trên hệ thống bằng cách duy trì chúng.

Để bật trình thực thi cho các thao tác này, hãy áp dụng các cờ này với --config=android_workers trên dòng lệnh:

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

Số lượng trình thực thi liên tục mặc định được tạo cho mỗi hành động là 4. Chúng ta có đo lường hiệu suất bản dựng được cải thiện bằng cách giới hạn số lượng thực thể cho mỗi hành động ở mức 1 hoặc 2, mặc dù điều này có thể khác nhau tuỳ thuộc vào hệ thống mà Bazel đang chạy và dự án đang được tạo.

Để giới hạn số lượng thực thể cho một thao tác, hãy áp dụng các cờ sau:

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.

Sử dụng AAPT2

aapt2 đã được cải thiện hơn aapt và cũng tạo ra các APK nhỏ hơn. Để sử dụng aapt2, hãy sử dụng Gắn cờ --android_aapt=aapt2 hoặc đặt aapt2 trên aapt_version bật android_binaryandroid_local_test.

Tối ưu hoá SSD

Cờ --experimental_multi_threaded_digest hữu ích khi tối ưu hoá chuỗi đại diện trên ổ SSD.