Android 13 כוללת רשימות מעודכנות של ממשקים מוגבלים שאינם SDK, על סמך שיתוף פעולה עם מפתחי Android והבדיקות הפנימיות האחרונות. בכל פעם שאפשר, אנחנו מוודאים שקיימות חלופות ציבוריות לפני שאנחנו מגבילים ממשקים שאינם SDK.
אם האפליקציה לא מטרגטת ל-Android 13, יכול להיות שחלק מהשינויים האלה לא ישפיעו עליכם באופן מיידי. עם זאת, למרות שכרגע אפשר להשתמש בחלק מהממשקים שאינם SDK (בהתאם לרמת ה-API המיועדת של האפליקציה), שימוש בכל שדה או שיטה שאינם SDK תמיד כרוך בסיכון גבוה לפגיעה באפליקציה.
אם אתם לא בטוחים אם האפליקציה שלכם משתמשת בממשקים שאינם SDK, אתם יכולים לבדוק את האפליקציה כדי לגלות. אם האפליקציה שלכם מסתמכת על ממשקים שאינם SDK, כדאי להתחיל לתכנן מעבר לחלופות SDK. עם זאת, אנחנו מבינים שיש אפליקציות שבהן יש תרחישי שימוש לגיטימיים לשימוש בממשקים שאינם SDK. אם אתם לא מוצאים חלופה לשימוש בממשק שאינו SDK לתכונה באפליקציה, אתם צריכים לבקש API ציבורי חדש.
רשימת השינויים ב-Android 13
השינויים ברשימה ב-Android 13 נכללים בקטגוריה הבאה:
- ממשקים שאינם SDK שלא נתמכו ב-Android 12 (רמת API 31) ונחסמו ב-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.