Trang này chứa thông tin 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 về cách 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 đề xuất
Cờ nằm trong ngữ 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 sẽ ghi hồ sơ theo dõi JSON vào một tệp có tên 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 hành động tạo bản dựng Android.
Một tập hợp con của các thao tác tạo bản dựng Android có hỗ trợ cho worker ổn định.
Các cụm từ gợi nhớ cho các thao tác này là:
- DexBuilder
- Javac
- Đơn giản hoá
- AaptPackage
- AndroidResourceParser
- AndroidResourceValidator
- AndroidResourceCompiler
- RClassGenerator
- AndroidResourceLink
- AndroidAapt2
- AndroidAssetMerger
- AndroidResourceMerger
- AndroidCompiledResourceMerger
Việc bật 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ụ trong số này, nhưng chi phí tăng lên là mức sử dụng bộ nhớ trên hệ thống do duy trì các công cụ này.
Để bật worker cho 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 worker ổn định mặc định được tạo 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ể 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 hành động, 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 sử dụng cờ --android_aapt=aapt2
hoặc đặt aapt2
trên aapt_version
trên android_binary
và android_local_test
.
Tối ưu hoá ổ SSD
Cờ --experimental_multi_threaded_digest
rất hữu ích để tối ưu hoá tính toán chuỗi đại diện trên ổ SSD.