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

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

Các cờ này có cú pháp cấu hình bazelrc nên 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 phân tích

Theo mặc định, Bazel viết một hồ sơ theo dõi 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ơ.

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

Một tập hợp con các hành động xây dựng Android có hỗ trợ trình thực thi liên tục.

Thao tác ghi nhớ của những hành động này là:

  • DexBuilder
  • Java
  • Quá trình đơn giản hoá (desugar)
  • AaptPackage
  • AndroidResourceParser
  • AndroidResourceValidator
  • AndroidResourceCompiler
  • RClassGenerator
  • AndroidResourceLink
  • AndroidAapt2
  • AndroidAssetMerger
  • AndroidResourceMerger
  • AndroidCompiledResourceMerger

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

Để cho phép trình thực thi thực hiện các thao tác này, hãy áp dụng các cờ này 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 trình thực thi liên tục được tạo mặc định cho mỗi hành động 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 thực thể của mỗi hành động thành 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 xây dựng.

Để giới hạn số lượng thực thể của 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 được các tệp APK nhỏ hơn. Để sử dụng aapt2, hãy sử dụng cờ --android_aapt=aapt2 hoặc đặt aapt2 trên aapt_version trên android_binaryandroid_local_test.

Tối ưu hoá ổ SSD

Cờ --experimental_multi_threaded_digest rất hữu ích cho việc tối ưu hoá việc tính toán chuỗi đại diện trên ổ SSD.