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ờ đề xuấ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ợ công nhân bền bỉ.
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_binary
và android_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.