כלים של מסגרת התאימות

ב-Android 11 נוספו כלים חדשים למפתחים לבדיקה ול ניפוי באגים באפליקציה בתגובה לשינויים בהתנהגות בגרסאות חדשות יותר של Android הפלטפורמה. הכלים האלה הם חלק ממסגרת תאימות שמאפשרת לאפליקציה מפתחים מפעילים ומשביתים בנפרד את האפשרות לשינויי תוכנה באמצעות המפתחים או ADB. הגמישות הזו תעזור לכם להתכונן לטרגט את בגרסת API יציבה ובזמן שבודקים את האפליקציה עם מהדורת התצוגה המקדימה של בגרסה הבאה של Android.

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

איך מזהים אילו שינויים מופעלים

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

זיהוי השינויים שהופעלו באמצעות האפשרויות למפתחים

איור 1. שינויים בתאימות האפליקציה במסך באפשרויות למפתחים.

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

  1. אם האפשרויות למפתחים עדיין לא הופעלו, מפעילים אותן.
  2. פותחים את אפליקציית ההגדרות במכשיר ומנווטים אל מערכת > מתקדם > אפשרויות למפתחים > שינויים בתאימות האפליקציה.
  3. בוחרים את האפליקציה מהרשימה.

כל שינוי בהתנהגות שייך בדרך כלל לאחת משתי הקטגוריות הבאות:

  • שינויים שמשפיעים על כל האפליקציות שפועלות בגרסה הזו של Android, בלי קשר של targetSdkVersion של האפליקציה.

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

  • שינויים שמשפיעים רק על אפליקציות שמטרגטות לגרסאות מסוימות של Android. כי השינויים האלה משפיעים רק על אפליקציות שמטרגטות לגרסה ספציפית של ב-Android, הם מכונים גם שינויים שמוגבלים על ידי targetSDKVersion.

    השינויים האלה מופעלים כברירת מחדל במסגרת התאימות אם האפליקציה מטרגטת לגרסה גבוהה יותר מגרסת ה-API שצוינה ברשימה. לדוגמה, שינוי בהתנהגות שמוגבל על ידי targetSDKVersion ב- Android 13 (רמת API 33) יופיע בממשק המשתמש בקטע שנקרא מופעלת עבור targetSdkVersion >=33. בחלק מהגרסאות הקודמות של Android, הקטע הזה נקרא 'מופעל אחרי SDK API_LEVEL' במקום זאת.

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

זיהוי שינויים שהופעלו באמצעות Logcat

לכל שינוי בהתנהגות, בפעם הראשונה שבה האפליקציה מעבדת את השינויים קוראת ל-API המושפע. המערכת מפיקה הודעת Logcat, כמו ההודעה הבאה:

D CompatibilityChangeReporter: Compat change id reported: 194833441; UID 10265; state: ENABLED

כל הודעת Logcat כוללת את הפרטים הבאים:

מזהה שינוי
מציין איזה שינוי משפיע על האפליקציה. ערך זה ממופה לאחד שינויים בהתנהגות שמפורטים במסך שינויים בתאימות האפליקציה (ראו איור 1). בדוגמה זו, 194833441 ממופה אל NOTIFICATION_PERM_CHANGE_ID.
UID
מראה איזו אפליקציה מושפעת מהשינוי.
מדינה

הערה שמציינת אם השינוי משפיע על האפליקציה.

המצב יכול להיות אחד מהערכים הבאים:

מדינה משמעות
ENABLED השינוי מופעל והוא ישפיע על התנהגות האפליקציה אם האפליקציה משתמשת בממשקי ה-API שהשתנו.
DISABLED

השינוי מושבת ולא ישפיע על האפליקציה.

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

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

זיהוי שינויים מופעלים באמצעות ADB

מריצים את פקודת ה-ADB הבאה כדי לראות את קבוצת השינויים המלאה (שניהם מופעלים (ומושבתת) בכל המכשיר:

adb shell dumpsys platform_compat

בפלט מופיעים הפרטים הבאים לגבי כל שינוי:

מזהה שינוי
מזהה ייחודי לשינוי הזה בהתנהגות. לדוגמה: 194833441.
שם
השם של ההתנהגות הזו משתנה. לדוגמה: NOTIFICATION_PERM_CHANGE_ID.
קריטריוני targetSDKVersion

סוג הtargetSDKVersion שמוגבל על ידי השינוי (אם יש כזה).

לדוגמה, אם השינוי הזה מופעל רק באפליקציות שמטרגטות לגרסת SDK 33 ואילך, enableAfterTargetSdk=32 הוא הפלט. אם השינוי לא מוגבל על ידי targetSDKVersion, הפלט הוא enableAfterTargetSdk=0.

שינויים מברירת המחדל של חבילות

השם של כל חבילה שבה נמצא מצב ברירת המחדל של השינוי (מופעלת או מושבתת) בוטלה.

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

packageOverrides={com.my.package=false}

אפשר להפעיל את השינויים שמוגבלים על ידי targetSDKVersion או מושבת כברירת מחדל, כך שרשימת החבילות יכולה לכלול מופעים של שתיהן true או false, בהתאם לכל targetSDKVersion של האפליקציות האלה. עבור דוגמה:

packageOverrides={com.my.package=true, com.another.package=false}

מידע נוסף על שינויים ספציפיים

הרשימה המלאה של השינויים בהתנהגות במסגרת התאימות חלק מהמסמכי התיעוד של כל גרסת Android. אפשר להיכנס לקישורים הבאים עבור מידע נוסף, בהתאם לגרסת Android שבודקים את האפליקציה עבור:

מתי מפעילים או משביתים את השינויים

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

מתי משביתים את השינויים?

ההחלטה מתי להשבית שינויים בדרך כלל תלויה בשאלה אם השינוי מוגבל על ידי targetSDKVersion או לא.

השינויים הופעלו בכל האפליקציות

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

לדוגמה, אם אתם מתכוננים לטרגט את Android 14 (רמת API 34), אתם יכולים להתחיל בהתקנת האפליקציה שלכם במכשיר שפועל Android 14 ובדיקת האפליקציה במסגרת הבדיקה הרגילה תהליכי עבודה. אם יש בעיות באפליקציה, אפשר להשבית את השינוי הגורם לבעיה, כך שתוכלו להמשיך לבדוק אם יש בעיות אחרות.

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

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

שינויים שמוגבלים על ידי targetSDKVersion

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

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

מתי מפעילים את השינויים

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

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

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

הפעלה או השבתה של השינויים

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

החלפת מצב באמצעות האפשרויות למפתחים

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

  1. אם האפשרויות למפתחים עדיין לא הופעלו, מפעילים אותן.
  2. פותחים את אפליקציית ההגדרות במכשיר ועוברים אל מערכת > מתקדם > אפשרויות למפתחים > שינויים בתאימות האפליקציה.
  3. בוחרים את האפליקציה מהרשימה.
  4. ברשימת השינויים, מאתרים את השינוי שרוצים להפעיל או להשבית. ומקישים על המתג.

    רשימת שינויים שאפשר להפעיל או להשבית

החלפת מצב של שינויים באמצעות ADB

כדי להפעיל או להשבית שינוי באמצעות ADB, מריצים אחת מהפקודות הבאות:

adb shell am compat enable (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME
adb shell am compat disable (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME

צריך להעביר את CHANGE_ID (לדוגמה, 194833441) או CHANGE_NAME (לדוגמה, NOTIFICATION_PERM_CHANGE_ID) והאפליקציות שלך PACKAGE_NAME

אפשר גם להשתמש בפקודה הבאה כדי לאפס שינוי לברירת המחדל שלו תוך הסרת כל שינוי מברירת המחדל שהגדרתם באמצעות ADB או האפשרויות למפתחים:

adb shell am compat reset (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME

הגבלות על החלפת שינויים

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

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

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