หน้านี้มีข้อมูลเกี่ยวกับการเพิ่มประสิทธิภาพการสร้างสำหรับแอป Android โดยเฉพาะ ดูการเพิ่มประสิทธิภาพการทำงานของบิลด์ทั่วไปด้วย Bazel ได้ที่ การเพิ่มประสิทธิภาพ
เครื่องหมายที่แนะนำ
โดยแฟล็กจะอยู่ในbazelrc
ไวยากรณ์การกำหนดค่า คุณจึงวางแฟล็กลงในไฟล์ bazelrc
ได้โดยตรงและเรียกใช้ด้วย --config=<configuration_name>
ในบรรทัดคำสั่ง
การสร้างโปรไฟล์ประสิทธิภาพ
โดยค่าเริ่มต้น Bazel จะเขียนโปรไฟล์การติดตาม JSON ลงในไฟล์ที่ชื่อ
command.profile.gz
ในเอาต์พุตเบสของ Bazel
ดูวิธีอ่านและโต้ตอบกับโปรไฟล์ได้ที่เอกสารประกอบโปรไฟล์ JSON
Worker แบบถาวรสำหรับการดำเนินการบิลด์ Android
การดำเนินการสร้าง Android บางส่วนรองรับWorker แบบถาวร
โดยตัวช่วยจำของการดำเนินการเหล่านี้มีดังนี้
- DexBuilder
- Javac
- Desugar
- AaptPackage
- AndroidResourceParser
- AndroidResourceValidator
- AndroidResourceCompiler
- RClassGenerator
- AndroidResourceLink
- AndroidAapt2
- AndroidAssetMerger
- AndroidResourceMerger
- AndroidCompiledResourceMerger
การเปิดใช้ Worker จะช่วยให้ประสิทธิภาพการบิลด์ดีขึ้นด้วยการประหยัดค่าใช้จ่ายในการเริ่มต้น JVM จากการเรียกใช้เครื่องมือแต่ละอย่าง แต่จะทำให้การใช้หน่วยความจำในระบบเพิ่มขึ้นเนื่องจากมีการคงค่าไว้
หากต้องการเปิดใช้ Worker สำหรับการดำเนินการเหล่านี้ ให้ใช้ Flag ต่อไปนี้กับ
--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