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

วันที่ รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

หน้านี้มีข้อมูลเกี่ยวกับการเพิ่มประสิทธิภาพบิลด์สำหรับ Android สำหรับแอปของคุณโดยเฉพาะ สำหรับการเพิ่มประสิทธิภาพบิลด์ทั่วไปด้วย Bazel โปรดดู การเพิ่มประสิทธิภาพ

ธงจะอยู่ใน ไวยากรณ์การกำหนดค่า bazelrc ดังนั้น สามารถวางลงในไฟล์ bazelrc โดยตรงและเรียกใช้ --config=<configuration_name> ในบรรทัดคำสั่ง

ประสิทธิภาพการทำโปรไฟล์

Bazel เขียนโปรไฟล์การติดตาม JSON โดยค่าเริ่มต้นลงในไฟล์ชื่อ command.profile.gz ในฐานเอาต์พุตของ Bazel ดูเอกสารประกอบของโปรไฟล์ JSON สำหรับ วิธีอ่านและโต้ตอบกับโปรไฟล์

ผู้ปฏิบัติงานอย่างต่อเนื่องสำหรับการดำเนินการบิลด์ของ Android

ชุดย่อยของการดำเนินการบิลด์ของ Android รองรับ ถาวร

การดำเนินการเหล่านี้ สิ่งที่ช่วยจำได้มีดังนี้

  • DexBuilder
  • Javac
  • เดอชูการ์
  • AaptPackage
  • AndroidResourceParser
  • AndroidResourceValidator
  • AndroidResourceCompiler
  • RClassGenerator
  • AndroidResourceLink
  • AndroidAapt2
  • AndroidAssetMerger
  • AndroidResourceMerger
  • AndroidCompiledResourceMerger

การอำนวยความสะดวกให้ผู้ปฏิบัติงานทำให้ประสิทธิภาพการทำงานดีขึ้นด้วยการประหยัดค่าใช้จ่ายจาก 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

การเพิ่มประสิทธิภาพ SDS

Flag --experimental_multi_threaded_digest มีประโยชน์ในการเพิ่มประสิทธิภาพไดเจสต์ การประมวลผลแบบดิสก์ (SSD)