בדף הזה תמצאו טיפים לפתרון בעיות לתחילת העבודה עם Performance Monitoring או באמצעות תכונות וכלים של Performance Monitoring.
בדיקות ראשוניות לפתרון בעיות
שתי הבדיקות הבאות הן שיטות מומלצות כלליות שמומלצות לכל המשתמשים לפני שממשיכים בפתרון בעיות.
1. בדיקת הודעות ביומן לאיתור אירועי ביצועים
צריך לבדוק את ההודעות ביומן כדי לוודא שה-SDK של Performance Monitoring מתעד אירועי ביצועים.
איך להציג הודעות ביומן לגבי אירועי ביצועים
כדי להפעיל רישום ביומן של ניפוי באגים עבור Performance Monitoring בזמן ה-build, מוסיפים רכיב
<meta-data>
לקובץAndroidManifest.xml
של האפליקציה, כך:<application> <meta-data android:name="firebase_performance_logcat_enabled" android:value="true" /> </application>
בודקים אם יש הודעות שגיאה בהודעות היומן.
Performance Monitoring מתייג את הודעות היומן שלו באמצעות
FirebasePerformance
. שימוש ב-Logcat סינון, ניתן להציג באופן ספציפי מעקב אחר משך הזמן ורשת HTTP/S מבקשים רישום ביומן על ידי הרצת הפקודה הבאה:adb logcat -s FirebasePerformance
מחפשים את סוגי היומנים הבאים שמעידים על כך ש-Performance Monitoring רישום של אירועי ביצועים ביומן:
Logging trace metric: TRACE_NAME, FIREBASE_PERFORMANCE_CONSOLE_URL
Logging network request trace: URL
לוחצים על כתובת ה-URL כדי להציג את הנתונים במסוף Firebase. הפעולה עשויה להימשך כמה דקות שבו הנתונים יתעדכנו במרכז השליטה.
אם האפליקציה לא מתעדת ביומן אירועי ביצועים, כדאי לעיין בטיפים לפתרון בעיות.
2. בדיקת לוח הבקרה של הסטטוס של Firebase
כדאי לבדוק את לוח הבקרה של סטטוס Firebase, למקרה יש הפסקה זמנית בשירות Firebase או ב-Performance Monitoring.
איך מתחילים לעבוד עם Performance Monitoring
אם מתחילים להשתמש ב-Performance Monitoring (iOS+ | Android | אינטרנט), פתרון הבעיות הבאות טיפים יכולים לעזור בפתרון בעיות שקשורות ל-Firebase בזיהוי ה-SDK או בהצגתו את נתוני הביצועים הראשונים במסוף Firebase.
ה-SDK נוסף לאפליקציה, אבל למסוף עדיין מופיעה בקשה להוסיף SDK
מערכת Firebase יכולה לזהות אם הוספתם את ה-SDK של Performance Monitoring לאפליקציה בהצלחה, כשהיא מקבלת ממנה את פרטי האירועים (כמו אינטראקציות עם האפליקציה). בדרך כלל, תוך 10 דקות ממועד הפעלת האפליקציה, תוצג ההודעה 'זוהתה ערכת SDK' בלוח הבקרה Performance במסוף Firebase. לאחר מכן, תוך 30 דקות, מרכז הבקרה מציג את הנתונים הראשוניים שעובדו.
אם חלפו יותר מ-10 דקות מאז הוספתם את הגרסה האחרונה של ה-SDK לאפליקציה, ועדיין לא ראיתם שינויים, בדקו את הודעות היומן כדי לוודא ש-Performance Monitoring מתעד אירועים. כדי לפתור את הבעיה של הודעת זיהוי SDK באיחור, אפשר לנסות את שלבי פתרון הבעיות המתאימים שמפורטים בהמשך.
האפליקציה מתעדת אירועים: פתרון בעיות צעדים
יש לוודא שנעשה שימוש ב-Performance Monitoring Android SDK 19.1.0 ואילך (או Firebase BoM מגרסה 26.3.0 ואילך), יש לעיין בנתוני הגרסה.
אם אתם עדיין מפתחים באופן מקומי, כדאי לנסות ליצור עוד אירועים לנתונים collection:
- כדי ליצור אירועים, אפשר להעביר את האפליקציה בין הרקע לחזית כמה פעמים, לקיים אינטראקציה עם האפליקציה על ידי ניווט בין מסכים ו/או מפעיל בקשות רשת.
צריך לוודא שההגדרה של Firebase קובץ (
google-services.json
) הוא נוספו כראוי לאפליקציה ושלא שיניתם את הקובץ. ספציפית, צריך לבדוק את הפרטים הבאים:שם קובץ התצורה לא מורחב בתווים נוספים, כמו
(2)
.קובץ התצורה נמצא בתיקייה module (ברמת האפליקציה) של האפליקציה.
מזהה האפליקציה ל-Android ב-Firebase (
mobilesdk_app_id
) שרשום בקובץ התצורה מתאים לאפליקציה שלך. מזהה האפליקציה ב-Firebase נמצא בקטע האפליקציות שלך כרטיס של הפרויקט settings הגדרות.
אם משהו נראה לא תקין בקובץ התצורה של האפליקציה שלכם, נסו את הפעולות הבאות:
מוחקים את קובץ התצורה שנמצא כרגע באפליקציה.
צריך לפעול לפי ההוראות האלה כדי מורידים קובץ תצורה חדש ומוסיפים אותו לאפליקציה ל-Android.
אם ה-SDK מתעד אירועים ונראה שהכול מוגדר בצורה נכונה, אבל אתם עדיין לא רואים את ההודעה לזיהוי ה-SDK או את הנתונים שעובדו (לאחר 10 דקות), פונים לתמיכה של Firebase.
האפליקציה לא מתעדת אירועים: שלבים לפתרון בעיות
כדי לבדוק את ההגדרה של הפלאגין Performance Monitoring Gradle:
עליך לוודא הוסיפה את את הפלאגין בצורה נכונה. ספציפית, צריך לבדוק את הפרטים הבאים:
- הוספת את הפלאגין
(
) אינצ'ים קובץ המודול (ברמת האפליקציה)apply plugin: 'com.google.firebase.firebase-perf' build.gradle
. - כללתם את התלות של classpath של הפלאגין
(
) בקובץclasspath 'com.google.firebase:perf-plugin:1.4.2' build.gradle
ברמת הפרויקט.
- הוספת את הפלאגין
(
צריך לוודא שהאלמנטים פלאגין לא מושבתת דרך אחת מהאפשרויות הבאות דגלים:
instrumentationEnabled
במודול שלך (ברמת האפליקציה) קובץbuild.gradle
firebasePerformanceInstrumentationEnabled
ב- קובץgradle.properties
בודקים שה-SDK של Performance Monitoring לא מושבת באמצעות אחד מהדגלים הבאים בקובץ
AndroidManifest.xml
:firebase_performance_collection_enabled
firebase_performance_collection_deactivated
מוודאים ש-Performance Monitoring לא מושבת בכתובת סביבת זמן ריצה.
אם לא מוצאים שום דבר מושבת באפליקציה, לפנות לתמיכה של Firebase.
לפי המסוף, ה-SDK זוהה, אבל לא מוצגים נתונים
Performance Monitoring מעבד נתונים של אירועי ביצועים לפני הצגתם מרכז הבקרה לביצועים.
אם חלפו יותר מ-24 שעות מאז 'ה-SDK זוהה' הופיעה הודעה, ואתם עדיין לא רואים נתונים, כדאי לבדוק לוח הבקרה של סטטוס Firebase למקרה שיש הפסקה זמנית ידועה בשירות. אם אין הפסקה זמנית בשירות, לפנות לתמיכה של Firebase.
פתרון בעיות כלליות
אם הוספת בהצלחה את ה-SDK ואתה משתמש ב-Performance Monitoring באפליקציה שלך, הטיפים הבאים לפתרון בעיות יכולים לעזור בבעיות כלליות שקשורות תכונות וכלים של Performance Monitoring.
האפליקציה לא מתעדת אירועי ביצועים
אם אתם לא רואים הודעות יומן לגבי ביצועים אירועים, נסו את השלבים הבאים לפתרון בעיות:
כדי לבדוק את ההגדרה של הפלאגין Performance Monitoring Gradle:
עליך לוודא הוסיפה את את הפלאגין בצורה נכונה. ספציפית, צריך לבדוק את הפרטים הבאים:
- הוספת את הפלאגין
(
) אינצ'ים קובץ המודול (ברמת האפליקציה)apply plugin: 'com.google.firebase.firebase-perf' build.gradle
. - כללתם את התלות של classpath של הפלאגין
(
) בקובץclasspath 'com.google.firebase:perf-plugin:1.4.2' build.gradle
ברמת הפרויקט.
- הוספת את הפלאגין
(
צריך לוודא שהאלמנטים פלאגין לא מושבתת דרך אחת מהאפשרויות הבאות דגלים:
instrumentationEnabled
במודול שלך (ברמת האפליקציה) קובץbuild.gradle
firebasePerformanceInstrumentationEnabled
ב- קובץgradle.properties
בודקים שה-SDK של Performance Monitoring לא מושבת באמצעות אחד מהדגלים הבאים בקובץ
AndroidManifest.xml
:firebase_performance_collection_enabled
firebase_performance_collection_deactivated
מוודאים ש-Performance Monitoring לא מושבת בכתובת סביבת זמן ריצה.
אם לא מוצאים שום דבר מושבת באפליקציה, לפנות לתמיכה של Firebase.
מרכז הבקרה לבדיקת ביצועים הוא חסרים נתונים של מעקב המסך
אם חסרים לכם נתונים לנתוני מעקב של עיבוד מסך, אפשר לנסות את הפעולות הבאות שלבים לפתרון הבעיה:
חשוב לוודא שאתם משתמשים בגרסה העדכנית ביותר של Android SDK (גרסה 21.0.1). האפשרות 'מעקב אחר רינדור המסך' זמינה רק בגרסה 15.2.0 ואילך.
מוודאים שהאפשרות חומרה לא מושבתת באופן ידני האצה למסך.
חשוב לוודא שאתם לא משתמשים ב-DexGuard או ב-Jack. Performance Monitoring הוא לא תואם לשרשראות הכלים האלה.
DexGuard משבית את האיסוף האוטומטי של הפעלת אפליקציות, פעילות באפליקציות בחזית ועקבות רקע של אפליקציה. עם זאת, כל מעקבי קוד בהתאמה אישית אמורות להתנהג כרגיל אם האפליקציה משתמשת ב-DexGuard.
Jack הוצא משימוש, ובדרך כלל לא מומלץ להשתמש בו באפליקציה.
מרכז הבקרה לבדיקת ביצועים הוא חסרים נתוני מעקב בהתאמה אישית
האם אתם רואים נתוני ביצועים של עקבות שנאספו באופן אוטומטי אבל לא עבור מעקבי קוד בהתאמה אישית? אפשר לנסות את הפעולות הבאות כדי לפתור את הבעיה:
אם ביצעת אינסטרומנטציה של מעקבי קוד מותאמים אישית באמצעות Trace API, לבדוק את הגדרת המעקב, במיוחד את הדברים הבאים:
- השמות של מעקבי קוד ומדדים מותאמים אישית חייבים לעמוד בתנאים הבאים:
דרישות: ללא רווח לבן בהתחלה או בסוף, ללא קו תחתון בהתחלה
(
_
) והאורך המקסימלי הוא 32 תווים. - יש להתחיל ולהפסיק את כל המעקבים. כל מעקב שלא התחיל, שלא הופסק, או נעצר לפני התחיל, לא יתועדו.
- השמות של מעקבי קוד ומדדים מותאמים אישית חייבים לעמוד בתנאים הבאים:
דרישות: ללא רווח לבן בהתחלה או בסוף, ללא קו תחתון בהתחלה
(
אם ביצעת אינסטרומנטציה של מעקבי קוד בהתאמה אישית דרך
@AddTrace
סימון, כדאי לבדוק את ההגדרה של הפלאגין Performance Monitoring Gradle:עליך לוודא הוסיפה את את הפלאגין בצורה נכונה. ספציפית, צריך לבדוק את הפרטים הבאים:
- הוספת את הפלאגין
(
) אינצ'ים קובץ המודול (ברמת האפליקציה)apply plugin: 'com.google.firebase.firebase-perf' build.gradle
. - כללתם את התלות של classpath של הפלאגין
(
) בקובץclasspath 'com.google.firebase:perf-plugin:1.4.2' build.gradle
ברמת הפרויקט.
- הוספת את הפלאגין
(
צריך לוודא שהאלמנטים פלאגין לא מושבתת דרך אחת מהאפשרויות הבאות דגלים:
instrumentationEnabled
בקובץbuild.gradle
של המודול (ברמת האפליקציה)firebasePerformanceInstrumentationEnabled
ב- קובץgradle.properties
בדקו את ההודעות ביומן כדי לוודא המערכת של Performance Monitoring רושמת ביומן מעקבי קוד מותאמים אישית צפויים.
אם Performance Monitoring רושם אירועים ביומן, אבל לא מוצגים נתונים אחרי 24 שעות: פנו לתמיכה של Firebase.
מרכז הבקרה לבדיקת ביצועים חסרים נתונים של בקשת רשת
אם חסרים נתונים של בקשת רשת, כדאי לנסות את השלבים הבאים לפתרון בעיות:
באפליקציות ל-Android, הפלאגין Performance Monitoring Gradle מאפשר תיוג שמספק מעקב אוטומטי אחר בקשות רשת HTTP/S. כדאי לבדוק את הדברים הבאים:
עליך לוודא הוסיפה את את הפלאגין בצורה נכונה. ספציפית, צריך לבדוק את הפרטים הבאים:
- הוספת את הפלאגין
(
) אינצ'ים קובץ המודול (ברמת האפליקציה)apply plugin: 'com.google.firebase.firebase-perf' build.gradle
. - כללתם את התלות של classpath של הפלאגין
(
) בקובץclasspath 'com.google.firebase:perf-plugin:1.4.2' build.gradle
ברמת הפרויקט.
- הוספת את הפלאגין
(
צריך לוודא שהאלמנטים פלאגין לא מושבתת דרך אחת או יותר מהאפשרויות הבאות דגלים:
instrumentationEnabled
במודול שלך (ברמת האפליקציה) קובץbuild.gradle
firebasePerformanceInstrumentationEnabled
ב- קובץgradle.properties
בודקים אם ספריית הרשת לא תואמת. Performance Monitoring באופן אוטומטי אוספת מדדים של בקשות רשת שמשתמשות ברשתות הבאות ספריות: OkHttp 3.x.x, Java's URLConnection ו-Apache HttpClient.
שימו לב שאפשר להוסיף מעקב מותאם אישית לבקשות רשת.
חשוב לשים לב לנקודות הבאות:
בהתאם להתנהגות של הקוד וספריות הרשת שמשמשות את הקוד שלך, Performance Monitoring עשוי לדווח רק על בקשות רשת הושלמו. כלומר, ייתכן שחיבורי HTTP/S שנותרו פתוחים לדווח עליהן.
האפליקציה Performance Monitoring לא תואמת ל-DexGuard ו-Jack.
- DexGuard משבית את המעקב אחר בקשות רשת HTTP/S.
- הכלי Jack הוצא משימוש בדרך כלל לא מומלץ להשתמש בהם באפליקציה שלכם.
Performance Monitoring לא מדווח על בקשות רשת עם שגיאות
Content-Type
כותרות. אבל בקשות רשת ללאContent-Type
כותרות עדיין יתקבלו.
הנתונים של בקשות הרשת לא נצברים כמצופה
איך Performance Monitoring צוברת בקשות רשת בתבניות של כתובות URL.
אפשר גם לנסות כתובת URL מותאמת אישית דפוסים!
שאלות נפוצות
מה קרה לבעיות המובילות בכרטיס 'ביצועים' בדף הבית של Project?
החלפנו את הבעיות המובילות בהתראות אחרונות, בהמשך להשקת ההתראות שלנו לאחרונה. ההתראות האלה מאפשרות לקבל התראות אוטומטיות כשהמכסות שהגדרתם חצו. הבעיות הוצאו משימוש והם הוחלפו בהתראות.
בורר האפליקציות בחלק העליון של כרטיס הביצועים מסנן את ההתראה רשומות בקטע התראות אחרונות. רק שלוש ההתראות האחרונות עבור האפליקציות שנבחרו מוצגות.
למידע נוסף על התראות: הגדרת התראות לגבי בעיות בביצועים
מה קרה ליכולת להגדיר ערכי סף לבעיות במסוף?
ב-Performance Monitoring יש תמיכה בהתראות לגבי מדדים שחורגים מהמספר המותר בערכי סף מוגדרים. כדי למנוע בלבול עם ערכי הסף שניתנים להגדרה האלו מדדי ביצועים, הסרנו את היכולת להגדיר ערכי סף בעיות.
מה קרה לפרטים ולמדדים במסוף Firebase?
החלפנו את הדפים 'פרטים ומדדים' בעיצוב מרכזי וחדש ממשק משתמש (UI) לשיפור האופן שבו ניתן לפתור בעיות. החדש הזה ממשק המשתמש לפתרון בעיות מציע את אותה פונקציונליות עיקרית שמציעה פרטים המדדים המוצעים. מידע נוסף על פתרון בעיות זמין ב- הצגת נתונים נוספים לגבי מעקב ספציפי
למה מספר הדגימות שונה ממה שציפיתי?
ב-Performance Monitoring נאספים נתוני ביצועים ממכשירי המשתמשים של האפליקציה. אם יש הרבה משתמשים באפליקציה או אם האפליקציה מניבה ביצועים טובים פעילות, Performance Monitoring עשוי להגביל את איסוף הנתונים לקבוצת משנה של מכשירים לצורך לצמצם את מספר האירועים המעובדים. המגבלות האלה מספיק גבוהות כדי גם עם פחות אירועים, ערכי המדדים עדיין מייצגים את של חוויית המשתמש באפליקציה.
כדי לנהל את נפח הנתונים שאנחנו אוספים, Performance Monitoring משתמש באפשרויות הבאות אפשרויות דגימה:
הגבלת קצב השליחה במכשיר: כדי למנוע מהמכשיר לשלוח רצפים פתאומיים של אנחנו מגבילים את מספר מעקבי הבקשות לרשת ולקוד שנשלחים ל-300 אירועים כל 10 דקות. הגישה הזו מגינה על המכשיר מפני מכשירי מדידה במעגל שיכולים לשלוח כמויות גדולות של נתוני ביצועים, ומונעת ממכשיר יחיד להטות את מדידות הביצועים.
דגימה דינמית: Performance Monitoring אוספת מגבלה של כ-100 מיליון אירועים של מעקבי קוד ו-100 מיליון נתוני מעקב אחרי בקשות רשת לכל אפליקציה מדי יום בקרב כל משתמשי האפליקציה. קצב דגימה דינמי מאוחזר במכשירים (באמצעות Firebase Remote Config) כדי לקבוע אם מכשיר אקראי לתעד ולשלוח מעקב. מכשיר שלא נבחר לדגימה לא לשלוח אירועים. קצב הדגימה הדינמי הוא ספציפי לאפליקציה ומשתנה לפי כדי להבטיח שהנפח הכולל של הנתונים שנאספים יישאר נמוך מהמגבלה.
במסגרת סשנים של משתמשים, נשלחים נתונים מפורטים נוספים מהמכשיר של המשתמש, מה שמחייב משאבים נוספים לתעד ולשלוח את הנתונים. כדי למזער את ההשפעה של המשתמשים סשנים, Performance Monitoring עשוי גם להגביל את מספר הסשנים.
הגבלת קצב שליחה בצד השרת: כדי לוודא שהאפליקציות לא חורגות ממגבלת הדגימה, Performance Monitoring עשוי להשתמש בדגימה בצד השרת כדי לבטל את שליחת חלק מהאירועים שהתקבלו מהמכשירים. אף שהגבלה כזו לא משנה את של המדדים שלנו, הוא עלול לגרום לשינויים קלים בדפוסים, כולל הבאים:
- מספר המעקבים יכול להיות שונה ממספר הפעמים שבהן קטע קוד הופעל.
- מעקבים הצמודים זה לזה בקוד עשויים להכיל מספר שונה של דוגמאות.
מה קרה לכרטיסייה בעיות במסוף?
החלפנו את הכרטיסייה 'בעיות' בהצגת התראות, מודיע לכם באופן אוטומטי כשיש חריגה מדרישות הסף שהגדרתם. לא צריך יותר לבדוק באופן ידני את מסוף Firebase כדי לקבוע את הסטטוס של סף מסוים. למידע על התראות, אפשר לעיין במאמר הגדרת התראות לגבי בעיות בביצועים.
מה קרה לכרטיסיות במכשיר ורשת במסוף? איך אפשר לראות את העקבות שהיו בדפים האלה?
עיצבנו מחדש את הקטע Performance Monitoring במסוף Firebase כך בכרטיסייה מרכז שליטה מוצגים מדדי המפתח וכל נתוני המעקב שלכם במקום אחד. בתור חלק מהעיצוב החדש, הסרנו את הדפים במכשיר ורשת.
בטבלת המעקב שבתחתית הכרטיסייה מרכז בקרה מוצגים אותם פרטים מידע שמוצג בכרטיסיות במכשיר ורשת, אך בחלק תכונות נוספות, כולל היכולת למיין את העקבות לפי האחוזים לגבי מדד ספציפי. כדי להציג את כל המדדים והנתונים של נכס ספציפי של מעקב, לוחצים על שם המעקב בטבלת המעקב.
אפשר להציג את הטרייסים בכרטיסי המשנה הבאים של טבלת הטרייסים:
- מעקב אחרי בקשות רשת (גם מחוץ לאריזה וגם מעקב בהתאמה אישית) — כרטיסיית המשנה בקשות רשת
- מעקבי קוד בהתאמה אישית – כרטיסיית המשנה מעקבים בהתאמה אישית
- נתוני הפעלה של האפליקציה, מעקב אחר אפליקציות קדימה, מעקב אחר אפליקציות ברקע — כרטיסיית המשנה מעקבים בהתאמה אישית
- שרטוטים של רינדור המסך – בכרטיסייה המשנית רינדור המסך
- מעקב אחר טעינת דפים – כרטיסיית משנה טעינת דף
לקבלת פרטים על טבלת המעקב וצפייה במדדים ובנתונים, אפשר להיכנס דף הסקירה הכללית של המסוף (iOS+ | Android | אינטרנט).
למה מספר הפריימים האיטיים והפריימים הקפואים לא תואם לציפיות שלי?
המערכת מחשבת את פריימים של רינדור איטי ופריימים קפואים בעזרת מכשיר משוער קצב רענון של 60Hz. אם קצב הרענון של המכשיר נמוך מ-60Hz, כל פריים יהיה זמן רינדור איטי יותר כי מתבצע עיבוד של פחות פריימים לשנייה. זמני רינדור איטיים יותר עלולים לגרום לדיווח על פריימים איטיים או קפואים יותר כי יותר פריימים יעובדו לאט יותר או ייתקעו. אבל אם מכשיר קצב הרענון גבוה מ-60Hz, כך שזמן הרינדור של כל פריים יהיה מהיר יותר. הדבר עשוי לגרום לדיווח על פחות פריימים איטיים או קפואים. זהו מגבלה ב-SDK של Performance Monitoring.
למה אני לא יכול לראות מעקבי מקטעים?
כדי לראות את הביצועים של המקטעים בנוסף לפעילות באפליקציה, צריך לוודא באפליקציה שלך מותקנת Performance Monitoring SDK בגרסה 20.1.0 ואילך של Android SDK. למידע נוסף, קראו את המאמר הוספת מעקב ביצועים לאפליקציה.
איך אפשר להבין אילו מעקבים קשורים למקטעים ולפעילויות?
כל אחד ממעקבי המקטעים והפעילות מבוסס על שם המחלקה שלו, כפי שהוגדר באפליקציה שלכם. כל אחד ממעקבי המסך מכיל את הקידומת st ואחריו את שם הכיתה. במסוף Firebase, הקידומת היא הוסר. למידע נוסף, ראו מידע על נתוני ביצועים של רינדור מסך (אפליקציות של Apple ו-Android) .
למה אני רואה פחות עקבות אחרי מקטעים מאשר עקבות אחרים?
ב-Performance Monitoring מתבצעת דגימת אירועים בכל האירועים שנאספים במכשיר. כך אנחנו יכולים לאסוף את מספר האירועים המינימלי שנדרש ממכשירי המשתמשים כדי לספק מדדי ביצועים.
איך תקבלו התראה אם יש בעיה בביצועי הרינדור של האפליקציה?
ב-Performance Monitoring אפשר להגדיר התראות על המדדים שחשובים לך. עבור שנוצרו מעקבים אחר עיבוד המסך, תוכלו להגדיר התראות שיודיעו לכם כאשר אחוז הפריימים האיטיים והקפואים חורג מהסף שהגדרת.
אחרי ההפעלה של הפלאגין Performance Monitoring Gradle, זמני ה-build שלי גבוהים. איך אפשר לשפר את זה?
Performance Monitoring ל-Android משתמש באינסטרומנטציה של בייטקוד כדי לספק תכונות ייחודיות כמו מעקב אחרי בקשות רשת HTTP/S. כחלק מההידור, התהליך מחייב איטרציה לכל המחלקות של האפליקציה (כולל יחסי תלות) כדי להטמיע את הקוד שחיוני למדידת הביצועים של בקשת הרשת של האפליקציה שלכם.
לפניכם כמה מהגורמים העיקריים שמאריכים את זמן ה-build:
- מספר הכיתות או הקבצים
- הגודל של כל אחד מהמחלקות האלה (שורות קוד)
- ההגדרות האישיות של המכשיר
- build ראשוני לעומת build נוסף (גרסאות build נוספות בדרך כלל) מהיר יותר מה-build הראשוני)
כדי לקצר את זמן ה-build, מומלץ מודולריזציה של הקוד
החל מגרסה 1.3.3 של הפלאגין Performance Monitoring, התמקדנו בשיפורים משמעותיים בעיבוד הגרסת build המצטברת ובאחסון במטמון של הקלט של הספרייה. כדי לקבל את השיפורים האחרונים בזמן ה-build, חשוב להשתמש את הגרסה העדכנית ביותר של פלאגין (גרסה 1.4.2).
לתשומת ליבכם: אפשר להשבית את התכונה הפלאגין Performance Monitoring לניפוי הבאגים שמתבצע באופן מקומי, אם רוצים להימנע מזמני build ארוכים. אבל, לפעמים הגישה הזאת לא מומלצת לגרסאות build בסביבת ייצור, כי היא עלולה להוביל חסרים מדידות של הביצועים של בקשות הרשת באפליקציה.
מה עושים אם מקבלים שגיאות build בגלל ספריות לא תואמות לפלאגין Performance Monitoring Gradle?
Performance Monitoring ל-Android משתמש באינסטרומנטציה של בייטקוד כדי לספק תכונות ייחודיות כמו מעקב אחרי בקשות רשת HTTP/S. כחלק מההידור, התהליך מחייב איטרציה לכל המחלקות של האפליקציה (כולל יחסי תלות) כדי להטמיע את הקוד שחיוני למדידת הביצועים של בקשת הרשת של האפליקציה שלכם.
אם מופיעות שגיאות build כמו JSR/RET are not supported with
computeFrames option
או שגיאות דומות אחרי השילוב עם הפלאגין Performance Monitoring, יכול להיות שיש לכם גם תלות בספרייה שאינה תואמת לפלאגין Performance Monitoring של Gradle.
כדי לעקוף את הבעיה, אפשר להחריג מחלקות או ספריות לא תואמות למדידה של ספריות או ספריות באופן הבא:
- עליך לעדכן לגרסה האחרונה של הפלאגין Performance Monitoring Gradle (גרסת גרסה 1.4.0 לפחות).
- מעדכנים את הגרסה של הפלאגין של Android Gradle לגרסה 7.2.0 ואילך.
- מוסיפים את הדגל הבא לקובץ
build.gradle
של המודול (ברמת האפליקציה) כדי לא לכלול את המחלקות/הספריות הלא תואמות: מידע נוסף על המאפייןandroid { // ... androidComponents { onVariants(selector().all(), { instrumentation.excludes.add("example.incompatible.library") }) } }
exclude
של ממשק ה-APIInstrumentation
של הפלאגין של Android Gradle זמין במאמר Instrumentation.
צריך לדווח על בעיה ב-GitHub כשנתקלים בשגיאות build בגלל ספריות לא תואמות, כדי שהן יוכלו להיות מוחרג מהאינסטרומנטציה של הפלאגין Performance Monitoring.
ייצוא הנתונים של Performance Monitoring שלי נמשך זמן רב מהצפוי אל ב-BigQuery. זה לא בזמן אמת?
אם הפעלתם את השילוב עם BigQuery ב-Firebase Performance Monitoring, הנתונים ייוּצאו ל-BigQuery 12 עד 24 שעות אחרי סיום היום (לפי שעון החוף המערבי).
לדוגמה, הנתונים מ-19 באפריל יהיו זמינים ב-BigQuery מ-20 באפריל בין 12:00 בחצות (כל התאריכים והשעות הם לפי שעון החוף המערבי של ארה"ב).
עיבוד נתונים והצגה כמעט בזמן אמת
מה המשמעות של 'כמעט בזמן אמת' בנתוני הביצועים?
Firebase Performance Monitoring תהליכים שנאספו נתוני ביצועים ככל שהם מתקבלים, יובילו להצגת נתונים כמעט בזמן אמת במסוף Firebase. העיבוד הסתיים מוצגים במסוף כמה דקות אחרי האיסוף, ולכן את המונח 'קרוב בזמן אמת'.
כדי לנצל את היתרונות של עיבוד נתונים כמעט בזמן אמת, צריך לוודא שהאפליקציה משתמשת ערכת SDK שתואמת בזמן אמת .
איך אפשר לקבל נתוני ביצועים כמעט בזמן אמת של האפליקציה?
כדי לנצל את היתרונות של עיבוד נתונים כמעט בזמן אמת, צריך רק לוודא שהאפליקציה שלך משתמשת בגרסת SDK Performance Monitoring שתואמת בזמן אמת עיבוד נתונים.
אלה גרסאות ה-SDK שתואמות בזמן אמת:
- iOS — גרסה 7.3.0 ואילך
- tvOS – גרסה 8.9.0 ואילך
- Android — גרסה 19.0.10 ואילך (או Firebase Android BoM גרסה 26.1.0 ואילך)
- אינטרנט – גרסה 7.14.0 ואילך
לתשומת ליבכם: אנחנו תמיד ממליצים להשתמש בגרסה העדכנית ביותר של ה-SDK, אבל הגרסה שצוינה למעלה תאפשר ל-Performance Monitoring לעבד את הנתונים שלך כמעט בזמן האימון.
אילו גרסאות של ה-SDK של Performance Monitoring נחשבות כתואמות בזמן אמת?
אלה גרסאות ה-SDK שתואמות לעיבוד נתונים בזמן אמת:
- iOS – גרסה 7.3.0 ואילך
- tvOS – גרסה 8.9.0 ואילך
- Android — גרסה 19.0.10 ואילך (או Firebase Android BoM גרסה 26.1.0 ואילך)
- אינטרנט – גרסה 7.14.0 ואילך
לתשומת ליבכם: אנחנו תמיד ממליצים להשתמש בגרסה העדכנית ביותר של ה-SDK, אבל הגרסה שצוינה למעלה תאפשר ל-Performance Monitoring לעבד את הנתונים שלך כמעט בזמן האימון.
מה קורה אם לא מעדכנים את האפליקציה לשימוש בגרסת SDK שתואמת בזמן אמת?
אם באפליקציה שלך לא נעשה שימוש בגרסת SDK תואמת בזמן אמת, עדיין תופיע כל נתוני הביצועים של האפליקציה במסוף Firebase. עם זאת, התצוגה יהיה עיכוב של כ-36 שעות ממועד הצגת נתוני הביצועים האוסף 'עדכונים'.
עדכנתי לגרסת SDK תואמת בזמן אמת, אבל חלק מהמשתמשים שלי עדיין בגרסאות ישנות של האפליקציה שלי. האם אני ממשיך לראות את הביצועים שלהן נתונים במסוף Firebase?
כן! בלי קשר לגרסת ה-SDK שבה נעשה שימוש במופע של אפליקציה, המידע שיוצג נתוני ביצועים מכל המשתמשים.
עם זאת, אם אתם בודקים נתונים עדכניים (שנאספו לפני פחות מ-36 שעות), הנתונים שמוצגים הם ממשתמשים במופעי אפליקציה שמשתמשים בגרסה תואמת של SDK בזמן אמת. עם זאת, הנתונים הלא עדכניים כוללים נתוני ביצועים מכל הגרסאות של האפליקציה.
יצירת קשר עם התמיכה של Firebase
אם לפנות לתמיכה של Firebase, לכלול תמיד את מזהה האפליקציה ב-Firebase. מוצאים את מזהה האפליקציה ב-Firebase בקטע כרטיס האפליקציות שלך של settings פרויקט הגדרות.