עדכונים בהגבלות על ממשקים שאינם ב-SDK ב-Android 13

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

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

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

רשימת השינויים ב-Android 13

השינויים ברשימה ב-Android 13 מתחלקים לקטגוריות הבאות:

כדי לקבל רשימה מלאה של כל הממשקים שאינם SDK ל-Android 13, אפשר להוריד את הקובץ הבא:

קובץ: hiddenapi-flags.csv

סיכום ביקורת (checksum) מסוג SHA-256: 233a277aa8ac475b6df61bffd95665d86aac6eb2ad187b90bf42a98f5f2a11a3

ממשקים שאינם SDK שחוסמים עכשיו ב-Android 13

בתיבת הקוד הבאה מפורטים כל הממשקים שאינם SDK שלא נתמכו ב-Android 12 (רמת API 31) וחסומים ב-Android 13 (רמת API 33). כלומר, הממשקים האלה שייכים לרשימה max-target-s, כך שהאפליקציה יכולה להשתמש בממשקים האלה רק אם היא מטרגטת ל-Android 12 (רמת API ‏31) וגרסאות ישנות יותר.

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

Landroid/app/Activity;->setDisablePreviewScreenshots(Z)V # Use setRecentsScreenshotEnabled() instead.
Landroid/os/PowerManager;->isLightDeviceIdleMode()Z # Use isDeviceLightIdleMode() instead.
Landroid/os/Process;->setArgV0(Ljava/lang/String;)V # In general, do not try to change the process name. If you must change the process name (for instance, for debugging), you can use pthread_setname_np() instead, though be aware that doing this might confuse the system.
Landroid/view/accessibility/AccessibilityInteractionClient;->clearCache(I)V # Use android.accessibilityservice.AccessibilityService#clearCache() instead.