Android 13 כולל רשימות מעודכנות של ממשקי non-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.