ביצועי Android Build

דף זה מכיל מידע על אופטימיזציה של ביצועי ה-build של אפליקציות ל-Android באופן ספציפי. ב-Bazel תוכלו לראות אופטימיזציה כללית של ביצועי הביצועים, בקטע אופטימיזציה של ביצועים.

הסימונים מופיעים בתחביר ההגדרה של bazelrc, כך שאפשר להדביק אותם ישירות בקובץ bazelrc ולהפעיל אותם עם --config=<configuration_name> שורת פקודה.

ביצועי פרופילים

Bazel כותבת כברירת מחדל פרופיל של מעקב JSON לקובץ שנקרא command.profile.gz בבסיס הפלט של Bazel. בתיעוד של פרופיל JSON מוסבר איך לקרוא את הפרופיל ולקיים איתו אינטראקציה.

עובדים קבועים עבור פעולות בנייה של Android.

קיימת תמיכה בתת-קבוצה של פעולות build של Android עבור עובדים עקשנים הנתונים.

מנחות הפעולות האלה הן:

  • DexBuilder
  • ג'אק
  • שומן חזיר
  • חבילת דירות
  • AndroidResourceParser
  • AndroidResourceResourceator
  • AndroidResourceCompiler
  • RClassGenerator
  • קישור ל-AndroidResourceLink
  • AndroidAapt2
  • AndroidAssetמיזוג
  • AndroidResourceמיזוג
  • AndroidCompiledResourceResourcer

הפעלת עובדים יכולה לשפר את ביצועי הבנייה על ידי חיסכון בעלויות האתחול של 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'. מדדנו את ביצועי ה-build המשופרים על ידי הגבלת מספר המופעים של כל פעולה אל 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

הסימון --experimental_multi_threaded_digest מועיל לאופטימיזציה של חישוב תקציר (SSD)