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

Báo cáo vấn đề Xem nguồn Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

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

Phân tích hiệu suất

Theo mặc định, Bazel ghi một hồ sơ dấu vết JSON vào một tệp có tên là command.profile.gz trong cơ sở đầu ra của Bazel. Hãy xem tài liệu về Hồ sơ JSON để biết cách đọc và tương tác với hồ sơ.

Worker liên tục cho các thao tác tạo bản dựng Android.

Một nhóm nhỏ các thao tác tạo bản dựng Android có hỗ trợ worker duy trì.

Các phím tắt của những thao tác này là:

  • DexBuilder
  • Javac
  • Desugar
  • AaptPackage
  • AndroidResourceParser
  • AndroidResourceValidator
  • AndroidResourceCompiler
  • RClassGenerator
  • AndroidResourceLink
  • AndroidAapt2
  • AndroidAssetMerger
  • AndroidResourceMerger
  • AndroidCompiledResourceMerger

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

Để bật các worker cho những thao tác này, hãy áp dụng các cờ sau bằng --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 mặc định của các worker liên tục được tạo cho mỗi thao tác là 4. Chúng tôi đã đ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 phiên bản cho mỗi thao tác ở mức 1 hoặc 2, mặc dù con số này có thể thay đổi 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 phiên bản 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ải thiện hiệu suất so với aapt và cũng tạo ra các tệp APK nhỏ hơn. Để sử dụng aapt2, hãy dùng cờ --android_aapt=aapt2 hoặc đặt aapt2 trên aapt_version trên android_binaryandroid_local_test.

Tối ưu hoá ổ đĩa thể rắn (SSD)

Cờ --experimental_multi_threaded_digest rất hữu ích để tối ưu hoá việc tính toán thông báo tóm tắt trên ổ đĩa SSD.