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

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

משך הקריאה: 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. תכונות כמו השהיית ההרכבה וחלון המטמון שניתן להתאמה אישית הן חיוניות לשמירה על אפס תקלות בגלילה כשעובדים עם פריטים מורכבים ברשימה.כדאי לצפות בפרק האחרון של #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, שבו מהנדסים ענו על השאלות הכי קשות שלכם בנושא R8, אופטימיזציות מבוססות פרופיל ועוד. פספסתם? חפשו את השידור החוזר!

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

נכתב על ידי:

להמשך הקריאה