פתרון בעיות בביצועים של בנייה באמצעות Build Analyzer

אפשר להשתמש בכלי Build Analyzer כדי לבדוק את ביצועי ה-build של הפרויקט. בכל בנייה שמבצעים, הכלי Build Analyzer מנסה להציג את המידע הכי חשוב כדי שתוכלו לזהות במהירות רגרסיות בביצועי הבנייה ולפתור אותן.

לקבלת אסטרטגיות נוספות לשיפור הביצועים של ה-build, מומלץ לקרוא את המאמר בנושא אופטימיזציה של מהירות ה-build.

שנתחיל?

בכל פעם שאתם יוצרים את האפליקציה, כלי ניתוח הבנייה יוצר דוח ומציג נתונים מהדוח האחרון בחלון Build.

כדי להתחיל, פועלים לפי השלבים הבאים:

  1. אם עוד לא עשיתם את זה, אתם צריכים ליצור את האפליקציה באחת מהדרכים הבאות:
    • בסרגל התפריטים, לוחצים על Build > Make Project (בנייה > יצירת פרויקט).
    • כדי ליצור קובץ Android App Bundle או APK, לוחצים על Build > Build Bundle(s) / APK(s) > Build Bundle(s)‎ או על Build > Build Bundle(s) / APK(s) > Build APK(s)‎ בסרגל התפריטים.
  2. כדי לפתוח את החלון Build (גרסת Build), בוחרים באפשרות View > Tool Windows > Build (תצוגה > חלונות כלים > גרסת Build) בסרגל התפריטים.
  3. כדי לראות את דוח ה-Build ב-Build Analyzer, לוחצים על הכרטיסייה Build Analyzer בחלון Build.

הנתונים שמוצגים בכלי לניתוח בנייה עשויים להשתנות בין בנייה לבנייה, ולכן מומלץ לבנות את הפרויקט כמה פעמים ולהשוות את הנתונים כדי לזהות דפוסים.

הצגת תוספים עם משימות שקובעות את משך הבנייה

כשפותחים את הכלי Build Analyzer בפעם הראשונה אחרי השלמת בנייה, בחלון מוצג סיכום של ניתוח הבנייה, כמו שמוצג באיור 1.

איור 1. בדף הסקירה הכללית של Build Analyzer מוצג סיכום של הממצאים.

כדי לראות פירוט של הפלאגינים עם המשימות שמשפיעות על משך הבנייה, לוחצים על Plugins with tasks impacting build duration בדף הסקירה הכללית. אפשר גם לבחור באפשרות משימות מהתפריט הנפתח ולאשר שאתם מקבצים לפי תוסף. בתרשים, התוספים והמשימות שקשורות אליהם מסודרים לפי הזמן הכולל שלוקח להשלים אותם.

איור 2. הכלי Build Analyzer מספק פירוט של התוספים שמשפיעים על משך הבנייה.

הצגת המשימות שקובעות את משך הפיתוח

כדי לראות פירוט של המשימות שמשפיעות על משך הבנייה, לוחצים על Tasks impacting build duration (משימות שמשפיעות על משך הבנייה) בדף הסקירה הכללית או בוחרים באפשרות Tasks (משימות) מהתפריט הנפתח. אם הפרויקט שלכם משתמש ב-AGP 8.0 ואילך, המשימות מקובצות לפי קטגוריה כברירת מחדל, כך שקל יותר לזהות אזורים שמשפיעים על משך הבנייה. כדי לקבל מידע נוסף על הביצוע של כל משימת צאצא, לוחצים עליה.

איור 3. ‫Build Analyzer מספק פירוט של המשימות שהכי משפיעות על משך הבנייה.

בדיקת האזהרות

אם הכלי Build Analyzer מזהה שאפשר להגדיר חלק מהמשימות כך שיפעלו בצורה יעילה יותר, הוא מציג אזהרה. כדי לראות את כל האזהרות שזוהו על ידי Build Analyzer לגבי הגרסה, לוחצים על All warnings בדף הסקירה הכללית או בוחרים באפשרות Warnings מהתפריט הנפתח.

לחלק מהאזהרות יש קישור יצירת דוח, כמו שמוצג באיור 4. כשלוחצים על הקישור יצירת דוח, מופיעה תיבת דו-שיח עם מידע נוסף שיכול לעזור למפתח הפלאגין לפתור את הבעיה בגרסה חדשה של הפלאגין. לוחצים על העתקה כדי לשמור את הטקסט בלוח, וכך יהיה קל יותר להדביק את המידע בדוח על באג למפתח הפלאגין.

איור 4. מידע מפורט על אזהרות של Build Analyzer.

סוגי אזהרות

דוח Build Analyzer כולל את סוגי האזהרות הבאים:

  • תמיד להפעיל משימות: משימה שמופעלת תמיד גורמת למשימות אחרות לפעול בכל בנייה, וזה מיותר. יש שתי סיבות עיקריות לכך שתוצג האזהרה הזו:

    • (יותר נפוץ) לא הצהרתם על קלט ופלט של משימות בצורה נכונה. במקרה כזה, צריך להצהיר בצורה נכונה על הקלט והפלט של המשימות. המשמעות היא שצריך להצהיר על קלט ופלט בעצמכם במקומות שבהם אפשר, או לשנות את גרסאות הפלאגין אם המשימות שמפעילות את האזהרה הן מפלאגינים של צד שלישי.

    • (פחות נפוץ) הערך של upToDateWhen במשימה מוגדר כ-false, ומומלץ להימנע מכך. יכול להיות שיש לוגיקה מסוימת שהערך שלה הוא false או ש-upToDateWhen מקודד כ-false. אם יש לוגיקה שהערך שלה הוא false, יכול להיות שהתוצאה הזו מכוונת, ואפשר להתעלם מהאזהרה. אם הערך upToDateWhen מוטמע בקוד כ-false, צריך להסיר את ההטמעה מהקוד.

  • בעיות בהגדרת משימות: האזהרה הזו נוצרת למשימות שמוגדרות בהן אותה ספרייה כפלט. כלומר, סביר להניח שהפלט של המשימות האלה לא נשמר בין בנייה לבנייה, והמשימות האלה תמיד מופעלות, גם כשאין שינויים. כדי לטפל באזהרה הזו, צריך להגדיר ספריות פלט שונות למשימות. המשמעות היא שצריך להגדיר בעצמכם ספריות פלט שונות, או לשנות את גרסאות הפלאגין אם המשימות שמפעילות את האזהרה הן מפלאגינים של צד שלישי.

  • מעבד הערות לא מצטבר: האזהרה הזו נוצרת במצבים שבהם מעבד הערות הוא לא מצטבר וגורם למשימה JavaCompile לפעול תמיד באופן לא מצטבר. כדי לטפל באזהרה הזו, צריך לעבור למעבד הערות מצטבר.

  • מטמון ההגדרות: האזהרה הזו מוצגת אם שמירת ההגדרות במטמון לא מופעלת בפרויקט. כלי Build Analyzer עובר על רצף של build כדי לבדוק אם הפרויקט תואם לשמירת הגדרות במטמון. אם בדיקות התאימות מצליחות, אפשר להפעיל את שמירת ההגדרות במטמון מתוך Build Analyzer.

  • בדיקת Jetifier: האזהרה הזו מוצגת אם הדגל enableJetifier קיים ומופעל בפרויקט, כלומר אם יש לכם android.enableJetifier=true בקובץ gradle.properties. הכלי Build Analyzer יכול לבצע בדיקה כדי לראות אם אפשר להסיר את הדגל בבטחה, כדי לשפר את ביצועי הבנייה של הפרויקט ולעבור מהספריות של Android Support שלא מתחזקות יותר.

בדיקת ההשפעה של ההורדה

הכלי Build Analyzer מספק סיכום של הזמן שחלף בהורדת תלות ותצוגה מפורטת של ההורדות לכל מאגר. כדי לבדוק את ההשפעה של ההורדות, בוחרים באפשרות הורדות מהתפריט הנפתח. המידע הזה זמין גם בחלון סנכרון.

אפשר להשתמש במידע הזה כדי לקבוע אם הורדות בלתי צפויות של תלות משפיעות לרעה על ביצועי הבנייה. זה חשוב במיוחד במהלך בנייה מצטברת, שבה לא אמורים להוריד באופן עקבי ארטיפקטים.

באופן ספציפי, תוכלו להשתמש במידע הזה כדי לזהות בעיות בהגדרות, כמו שימוש בגרסאות דינמיות של תלות שגורמות להורדות לא צפויות. בנוסף, אם אתם רואים מספר גבוה של בקשות שנכשלו עבור מאגר מסוים, יכול להיות שצריך להסיר את המאגר או להעביר אותו למקום נמוך יותר בהגדרת המאגר.

איור 5. הכלי Build Analyzer מציג את ההשפעה של ההורדות על משך הבנייה.

[Windows בלבד] בדיקת ההשפעה של תוכנת האנטי-וירוס

כלי הניתוח של Build מודיע לכם אם תוכנת האנטי-וירוס עשויה להשפיע על הביצועים של ה-Build. זה יכול לקרות אם תוכנת אנטי-וירוס, כמו Windows Defender, מבצעת סריקה בזמן אמת של ספריות שמשמשות את Gradle. כלי Build Analyzer ממליץ על רשימה של ספריות להחרגה מסריקה פעילה, ואם אפשר, הוא מציע קישור להוספתן לרשימת ההחרגות של תיקיית Windows Defender.