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 nói riêng. Để 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 bài viết Tối ưu hoá hiệu suất.
Cờ nên dùng
Các cờ này nằm trong cú pháp cấu hình
bazelrc, vì vậy,
bạn có thể dán trực tiếp 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ơ.
Trình thực thi liên tục cho các thao tác xây dựng Android.
Một nhóm con các thao tác xây dựng Android hỗ trợ trình thực thi liên tục.
Các từ viết tắt của các thao tác này là:
- DexBuilder
- Javac
- Desugar
- AaptPackage
- AndroidResourceParser
- AndroidResourceValidator
- AndroidResourceCompiler
- RClassGenerator
- AndroidResourceLink
- AndroidAapt2
- AndroidAssetMerger
- AndroidResourceMerger
- AndroidCompiledResourceMerger
Việc bật trình thực thi 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 sẽ làm tăng mức sử dụng bộ nhớ trên hệ thống bằng cách duy trì các trình thực thi này.
Để 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 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 theo mặc định cho mỗi thao tác là 4. Chúng tôi đã
đo lường được 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 thao tác thành 1 hoặc 2, mặc dù điều này
có thể thay đổi 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ể 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ó hiệu suất được cải thiện
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_binary và android_local_test.
Tối ưu hoá SSD
Cờ --experimental_multi_threaded_digest rất hữu ích để tối ưu hoá việc tính toán bản tóm tắt
trên SSD.