หน้านี้มีข้อมูลเกี่ยวกับการเพิ่มประสิทธิภาพบิลด์สําหรับแอป Android โดยเฉพาะ หากต้องการเพิ่มประสิทธิภาพทั่วไปของบิลด์ด้วย Bazel โปรดดูการเพิ่มประสิทธิภาพ
แฟล็กที่แนะนํา
แฟล็กจะอยู่ในไวยากรณ์การกําหนดค่า bazelrc
และสามารถวางลงในไฟล์ bazelrc
ได้โดยตรง และเรียกใช้ด้วย --config=<configuration_name>
ในบรรทัดคําสั่ง
การสร้างประสิทธิภาพ
Bazel จะเขียนโปรไฟล์การติดตาม JSON ลงในไฟล์ชื่อ command.profile.gz
ในฐานเอาต์พุตของ Bazel โดยค่าเริ่มต้น
อ่านและโต้ตอบกับโปรไฟล์ได้ในเอกสารประกอบของโปรไฟล์ JSON
ผู้ปฏิบัติงานถาวรสําหรับการดําเนินการสร้าง Android
ชุดย่อยของการดําเนินการสร้าง Android รองรับผู้ปฏิบัติงานถาวร
การช่วยจําของการกระทําเหล่านี้ ได้แก่
- เครื่องมือสร้าง DexBuilder
- Java
- น้ําตาล Desugar
- AaptPackage
- โปรแกรมแยกวิเคราะห์แหล่งข้อมูล Android
- โปรแกรมตรวจสอบทรัพยากร Android
- คอมไพเลอร์ทรัพยากร Android
- ตัวสร้างคลาส R
- ลิงก์แหล่งข้อมูลของ Android
- AndroidAapt2
- การผสานเนื้อหา Android
- การผสานทรัพยากร Android
- โปรแกรมรวมแหล่งข้อมูล Android
การเปิดโอกาสให้ผู้ปฏิบัติงานสร้างประสิทธิภาพที่ดีขึ้นด้วยการลดต้นทุนในการเริ่มต้นใช้งาน JVM จากการเรียกใช้เครื่องมือแต่ละรายการเหล่านี้ แต่ต้นทุนต่อการใช้หน่วยความจําที่เพิ่มขึ้นของระบบก็ยังคงอยู่
หากต้องการเปิดใช้ผู้ปฏิบัติงานสําหรับการดําเนินการเหล่านี้ ให้ใช้แฟล็กเหล่านี้กับ --config=android_workers
ในบรรทัดคําสั่ง
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
จํานวนผู้ปฏิบัติงานถาวรเริ่มต้นที่สร้างขึ้นต่อการดําเนินการคือ 4
เราได้วัดประสิทธิภาพบิลด์ที่ปรับปรุงแล้วโดยการกําหนดจํานวนอินสแตนซ์ของแต่ละการดําเนินการเป็น 1
หรือ 2
แต่อาจแตกต่างกันไปตามระบบที่ Bazel ทํางานอยู่และโปรเจ็กต์ที่กําลังสร้าง
หากต้องการจํากัดจํานวนอินสแตนซ์สําหรับการดําเนินการ ให้ใช้แฟล็กเหล่านี้
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.
การใช้ AAPT2
aapt2
ได้รับการปรับปรุงประสิทธิภาพ
กว่า aapt
และสร้าง APK ขนาดเล็กอีกด้วย หากต้องการใช้ aapt2
ให้ใช้แฟล็ก --android_aapt=aapt2
หรือตั้งค่า aapt2
ใน aapt_version
บน android_binary
และ android_local_test
การเพิ่มประสิทธิภาพ SSD
แฟล็ก --experimental_multi_threaded_digest
มีประโยชน์สําหรับการเพิ่มประสิทธิภาพการคํานวณไดเจสต์บน SSD