ประสิทธิภาพของ Android บิวด์

รายงานปัญหา ดูแหล่งที่มา

หน้านี้มีข้อมูลเกี่ยวกับการเพิ่มประสิทธิภาพบิลด์สําหรับแอป 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