אירועים ותוכניות

אופטימיזציה מלאה: סיכום שבוע ההדגשה של הביצועים

משך הקריאה: 3 דקות
Ben Weiss ו- Sara Hamilton

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

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

שימוש ב-R8 Optimizer כדי להאיץ את האפליקציה

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

כדי לעזור לכם, עדכנו והרחבנו את התיעוד בנושא R8 Optimizer.

ב-Reddit נרשם קיצור של 40% בזמן הטעינה של האפליקציה במצב התחלתי (cold start) וירידה של 30% במספר שגיאות ה-ANR אחרי הפעלת המצב המלא של R8.

אפשר לקרוא את המקרה לדוגמה המלא בבלוג שלנו.

image.png

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

image.png

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

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

עזרה בשיפור הביצועים

פרופילים של Baseline מבטלים למעשה את הצורך בקימפול Just in Time, וכך משפרים את מהירות ההפעלה, הגלילה, האנימציה וביצועי העיבוד הכוללים. פרופילים להפעלה הופכים את הפעלת האפליקציה לקלה עוד יותר, כי הם מסדרים את קובצי ה-classes.dex של האפליקציה בסדר חכם.

כדי להבין עד כמה פרופילים של Baseline חשובים לביצועי האפליקציה, אפשר לקרוא את בלוג ההנדסה של Meta. שם הם הסבירו איך פרופילים של Baseline שיפרו מדדי ביצועים קריטיים שונים בשיעור של עד 40% באפליקציות שלהם.

אנחנו ממשיכים לשפר את הביצועים של Jetpack פיתוח נייטיב ב-Jetpack פיתוח נייטיב 1.10. תכונות כמו pausable composition וחלון המטמון שניתן להתאמה אישית הן חיוניות לשמירה על אפס תקלות בגלילה כשעובדים עם פריטים מורכבים ברשימה.כדאי לצפות בפרק האחרון של #TheAndroidShow שבו אנחנו מסבירים את זה בפירוט.

מידע נוסף זמין בפוסט בבלוג שפרסמנו ביום רביעי: שיקולים מעמיקים יותר לגבי ביצועים

מדידת הביצועים יכולה להיות פשוטה כמו 1, 2, 3

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

ברמה 1 אנחנו מסבירים איך להשתמש בנתונים שזמינים בקלות מAndroid Vitals, שכוללים נתונים מהשטח לגבי ANR, קריסות ושימוש מוגזם בסוללה.

נלמד אתכם גם איך לעלות רמה. לדוגמה, נראה איך מגיעים לרמה 3 באמצעות בדיקת ביצועים מקומית באמצעות Jetpack Macrobenchmark וממשק ה-API החדש UiAutomator 2.4 כדי למדוד ולאמת בצורה מדויקת כל שינוי בביצועים של האפליקציה.

מידע נוסף זמין בפוסט בבלוג שפרסמנו ביום חמישי: [Link to Thursday's Blog: Leveling Guide for your Performance Journey]

ניפוי באגים משופר בביצועים

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

Automatic Logcat Retrace

החל מ-Android Studio Narwhal, אפשר לבטל את ההסתרה של עקבות מחסנית באופן אוטומטי בחלון Logcat. כך תוכלו לראות ולנפות באגים בקריסות באופן מיידי בגרסה מוכנה לייצור.

צמצום הכללים להרשאות שיתוף

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

בנוסף, ההשקה של התכונות ב-Android Studio Otter 3 כוללת בדיקת lint חדשה לכללי Keep, כך שגם כאן יש לכם פתרון.

image.png

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

מידע נוסף זמין בפוסט בבלוג שפרסמנו ביום שלישי: הגדרה ופתרון בעיות של כללי שמירה ב-R8

עבודה ברקע

שיתפנו הנחיות לניפוי באגים בתרחישים נפוצים שאתם עשויים להיתקל בהם כשאתם מתזמנים משימות באמצעות WorkManager.

Background Task Inspector מספק ייצוג חזותי ותצוגת תרשים של משימות WorkManager, ועוזר לנפות באגים כדי להבין למה עבודה מתוזמנת מתעכבת או נכשלת. בנוסף, בדף הנחיתה של התיעוד המעודכן בנושא עבודה ברקע מודגשים ממשקי API ספציפיים למשימות שעברו אופטימיזציה לתרחישי שימוש מסוימים, כדי לעזור לכם להשיג ביצועים אמינים יותר.
 

מידע נוסף זמין בפוסט בבלוג שפרסמנו ביום רביעי: שיקולים לגבי ביצועים של עבודות ברקע

אופטימיזציה של הביצועים היא תהליך מתמשך

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

סיימנו את השבוע עם סשן שאלות ותשובות בשידור חי #AskAndroid Live, שבו מהנדסים ענו על השאלות הכי קשות שלכם בנושא R8, אופטימיזציות מבוססות פרופיל ועוד. פספסתם? חפשו את השידור החוזר!

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

נכתב על ידי:

להמשך הקריאה