שינויים במסגרת התאימות (Android 11)

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

ADD_CONTENT_OBSERVER_FLAGS

מזהה השינוי: 150939131

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

באפליקציות שמטרגטות ל-Android 11, יש עומס יתר חדש של API ציבורי onChange(boolean, Uri, int) שכולל ארגומנט flags של מספר שלם.

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

ADMIN_APP_PASSWORD_COMPLEXITY

מזהה השינוי: 123562444

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

באפליקציות לשותפים שמטרגטות ל-Android 11, תוצג שגיאה בכל פעם שאפליקציה מגדירה דרישת סיסמה שלא רלוונטית לאיכות הסיסמה שהוקצתה כרגע. לדוגמה, אם איכות הסיסמה מוגדרת כ-DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, אפליקציה לא תוכל להגדיר אורך מינימלי לסיסמה. במקרה כזה, לפני שמנסים להגדיר את אורך הסיסמה המינימלי, האפליקציה צריכה קודם להפעיל את השיטה setPasswordQuality() ורק אחר כך להפעיל את השיטה setPasswordMinimumLength().

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

APP_DATA_DIRECTORY_ISOLATION

מזהה השינוי: 143937733

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

אפליקציות שמטרגטות את Android 11 לא יכולות יותר לגשת לקבצים בספריות נתונים פרטיות של אף אפליקציה, בלי קשר לגרסת ה-SDK המטורגטת של האפליקציה האחרת.

מידע נוסף זמין במאמר גישה לספריות פרטיות.

APN_READING_PERMISSION_CHANGE_ID

מזהה השינוי: 124107808

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

באפליקציות שמטרגטות ל-Android 11, כדי לגשת למסד הנתונים של APN נדרשת עכשיו ההרשאה Manifest.permission.WRITE_APN_SETTINGS.

מידע נוסף על השינוי הזה זמין במאמר גישת קריאה מוגבלת למסד הנתונים של APN.

BACKGROUND_RATIONALE_CHANGE_ID

מזהה השינוי: 147316723

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

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

למידע נוסף על השינוי הזה, קראו את המדריך בנושא גישה למיקום ברקע ב-Android 11, שבו מוסבר על שינויים בפרטיות שקשורים למיקום ב-Android 11.

CALLBACK_ON_CLEAR_CHANGE

מזהה השינוי: 119147584

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

בכל פעם שמתבצעת קריאה ל-Editor.clear, מתבצעת קריאה חוזרת (callback) ל-OnSharedPreferenceChangeListener.onSharedPreferenceChanged עם מפתח null.

מידע נוסף על השינוי הזה זמין במאמר שינויים בקריאה חוזרת (callback) של OnSharedPreferenceChangeListener.

CALLBACK_ON_MORE_ERROR_CODE_CHANGE

מזהה השינוי: 130595455

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

קודי השגיאה הורחבו ל-updateAvailableNetworks(List, Executor, Consumer) ול-setPreferredOpportunisticDataSubscription(int, boolean, Executor, Consumer).

CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE

מזהה השינוי: 148180766

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

זהו שינוי קל בהתנהגות של startWatchingMode(String, String, AppOpsManager.OnOpChangedListener). לפני השינוי הזה, המערכת החזירה קריאה חוזרת (callback) לפעולה שהוחלפה. אחרי השינוי, המערכת תחזיר קריאה חוזרת לפעולה שביקשתם בפועל, או לכל הפעולות שהוחלפו אם לא ציינתם פעולה.

CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID

מזהה השינוי: 136219221

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

באפליקציות שמטרגטות ל-Android 11, שירותים שפועלים בחזית מקבלים יכולות גישה למצלמה ולמיקרופון בזמן השימוש רק אם R.attr.foregroundServiceType מוגדר כ- ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA ו- ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE בהתאמה בקובץ המניפסט. בגרסאות קודמות של Android, שירותים שפועלים בחזית קיבלו באופן אוטומטי גישה למצלמה ולמיקרופון.

מידע נוסף על השינוי הזה זמין במאמר סוגי שירותים שפועלים בחזית ב-Android 11.

CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK

מזהה השינוי: 128611929

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

אפליקציות לא יכולות יותר לפרסם הודעות קופצות בהתאמה אישית ברקע. עם זאת, אפליקציות עדיין יכולות לפרסם הודעות קצרות באמצעות השיטה Toast.makeText(Context, CharSequence, int) והווריאציות שלה כשהן פועלות ברקע.

מידע נוסף על השינוי הזה זמין במאמר Custom toast views are blocked.

CHANGE_RESTRICT_SAW_INTENT

מזהה השינוי: 135920175

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

כוונות שמשתמשות בפעולה android.settings.MANAGE_APP_OVERLAY_PERMISSION ובסכמת ה-URI של הנתונים package לא מפנות יותר את המשתמש למסך ספציפי לאפליקציה לניהול ההרשאה המשויכת. במקום זאת, המשתמש מועבר למסך שבו הוא יכול לנהל את כל האפליקציות שביקשו את ההרשאה.

CHANGE_TEXT_TOASTS_IN_THE_SYSTEM

מזהה השינוי: 147798919

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

הודעות קופצות של טקסט מוצגות עכשיו על ידי SystemUI במקום בתוך האפליקציה. כך אפליקציות לא יכולות לעקוף את ההגבלות על פרסום הודעות קופצות בהתאמה אישית ברקע.

DEFAULT_SCOPED_STORAGE

מזהה השינוי: 149924527

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

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

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

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

EMPTY_INTENT_ACTION_CATEGORY

מזהה השינוי: 151163173

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

באפליקציות שמטרגטות ל-Android 11, המערכת זורקת עכשיו שגיאה אם action או category של מסנן Intent הם מחרוזת ריקה. בגרסאות שלפני Android 11, באג בפלטפורמה אפשר למקרה הזה לעבור בלי להציג שגיאה. שימו לב: זה לא כולל מקרים שבהם המאפיין הוא null או חסר, כי זה תמיד גרם לשגיאה.

FILTER_APPLICATION_QUERY

מזהה השינוי: 135549675

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

עכשיו האפליקציות צריכות להצהיר על החבילות וה-Intent שהן מתכוונות להשתמש בהם לפני שהן יכולות לקבל פרטים על אפליקציות אחרות במכשיר. ההצהרות האלה צריכות להתבצע באמצעות התג <queries> במניפסט של האפליקציה.

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

FORCE_ENABLE_SCOPED_STORAGE

מזהה השינוי: ערך: 132649864

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

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

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

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

GET_DATA_CONNECTION_STATE_R_VERSION

מזהה השינוי: 148535736

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

כדי לבדוק את גרסת ה-SDK של PreciseDataConnectionState#getDataConnectionState.

GET_DATA_STATE_R_VERSION

מזהה השינוי: 148534348

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

כדי לבדוק את גרסת ה-SDK של getDataState():

GET_PROVIDER_SECURITY_EXCEPTIONS

מזהה השינוי: 150935354

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

באפליקציות שמטרגטות ל-Android 11 (רמת API 30) ומעלה, getProvider(String) לא גורם יותר לחריגות אבטחה.

GET_TARGET_SDK_VERSION_CODE_CHANGE

מזהה השינוי: 145147528

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 10 (רמת API‏ 29) ומעלה.

כדי לבדוק את גרסת ה-SDK של השיטה SmsManager.sendResolverResult().

GWP_ASAN

מזהה השינוי: 135634846

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

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

מידע נוסף על השינוי הזה זמין במדריך של GWP-ASan.

HIDE_MAXTARGETSDK_P_HIDDEN_APIS

מזהה השינוי: 149997251

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 10 (רמת API‏ 29) ומעלה.

באפליקציות שמטרגטות ל-Android 10 (רמת API‏ 29) ומעלה, מסירה את הגישה לכל הממשקים שאינם SDK שנכללים ברשימת max-target-p (greylist-max-p) ל-Android 10 (רמת API‏ 29).

HIDE_MAXTARGETSDK_Q_HIDDEN_APIS

מזהה השינוי: 149994052

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

באפליקציות שמטרגטות ל-Android 11 (רמת API‏ 30) ומעלה, מסירה את הגישה לכל הממשקים שאינם SDK שנכללים ברשימת max-target-q (greylist-max-q) ל-Android 11 (רמת API‏ 30).

מידע נוסף על השינוי הזה זמין במאמר ממשקים שאינם SDK שנחסמו ב-Android 11.

LISTEN_CODE_CHANGE

מזהה השינוי: 147600208

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 10 (רמת API‏ 29) ומעלה.

כדי לבדוק את גרסת ה-SDK של TelephonyManager.listen(PhoneStateListener, int):

MISSING_APP_TAG

מזהה השינוי: 150776642

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

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

NATIVE_HEAP_POINTER_TAGGING

מזהה השינוי: 135754954

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

באפליקציות שמטרגטות ל-Android 11, להקצאות זיכרון בערימה (heap allocation) מקוריות יש עכשיו תג שאינו אפס בבייט המשמעותי ביותר.

מידע נוסף זמין במאמר תיוג מצביעים בערימה.

PHONE_STATE_LISTENER_LIMIT_CHANGE_ID

מזהה השינוי: 150880553

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

באפליקציות שמטרגטות ל-Android 11, יש עכשיו מגבלה על מספר האובייקטים מסוג PhoneStateListener שכל תהליך יכול לרשום באמצעות TelephonyManager.listen(PhoneStateListener, int). מגבלת ברירת המחדל היא 50, אבל אפשר לשנות אותה באמצעות עדכונים מרחוק של הגדרות המכשיר. המגבלה הזו נאכפת באמצעות IllegalStateException שמופעל על ידי TelephonyManager.listen(PhoneStateListener, int) כשהתהליך הבעייתי מנסה לרשום יותר מדי מאזינים.

PREVENT_META_REFLECTION_BLACKLIST_ACCESS

מזהה השינוי: 142365358

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

אפליקציות שמטרגטות ל-Android 11 לא יכולות יותר להשתמש בשכבה נוספת של השתקפות כדי לגשת לממשקים שאינם SDK ושהגישה אליהם מוגבלת.

PROCESS_CAPABILITY_CHANGE_ID

מזהה השינוי: 136274596

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

באפליקציות שמטרגטות ל-Android 11, אפשר עכשיו להשתמש בדגל Context.BIND_INCLUDE_CAPABILITIES כדי להעביר יכולות בזמן השימוש מתהליך הלקוח לשרת מאגד (bound service).

REMOVE_ANDROID_TEST_BASE

מזהה השינוי: 133396946

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

באפליקציות שמטרגטות את Android 11, הספרייה android.test.base הוסרה אם האפליקציה לא תלויה ב-android.test.runner (כי היא תלויה במחלקות מהספרייה android.test.base).

REQUEST_ACCESSIBILITY_BUTTON_CHANGE

מזהה השינוי: 136293963

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

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

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

RESOURCES_ARSC_COMPRESSED

מזהה השינוי: 132742131

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

אי אפשר להתקין אפליקציות שמטרגטות ל-Android 11 (רמת API 30) אם הן מכילות קובץ resources.arsc דחוס או אם הקובץ הזה לא מיושר לגבול של 4 בייטים.

מידע נוסף על השינוי הזה זמין במאמר קובצי משאבים דחוסים.

RESTRICT_STORAGE_ACCESS_FRAMEWORK

מזהה השינוי: 141600225

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

אם האפליקציה מטרגטת ל-Android 11 ומשתמשת ב-Storage Access Framework (SAF), לא ניתן יותר לגשת לספריות מסוימות באמצעות פעולות ה-Intent‏ ACTION_OPEN_DOCUMENT ו-ACTION_OPEN_DOCUMENT_TREE. מידע נוסף על השינויים האלה זמין בקטע בנושא הגבלות גישה למסמכים בדף שעוסק בעדכוני פרטיות שקשורים לאחסון ב-Android 11.

SELINUX_LATEST_CHANGES

מזהה השינוי: 143539591

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

השינוי הזה מגביל את הגישה של אפליקציות לדומיין SELinux untrusted_app_R-targetSDk. זהו אחד השינויים הבסיסיים במסגרת התאימות שמאפשרים לאפליקציות להחליף מצב של שינויים אחרים שמוגבלים על ידי targetSdkVersion בלי לשנות את ה-targetSDKVersion של האפליקציה. לכן, אל תשביתו את השינוי הזה באפליקציה שמטרגטת את Android 11, אחרת האפליקציה לא תפעל.

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

THROW_SECURITY_EXCEPTIONS

מזהה השינוי: 147340954

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

לפני Android 11, שגיאת הרשאה הייתה גורמת ל-setEnabled לזרוק רק SecurityException. ב-Android 11 זה כבר לא נכון, ו-SecurityException יכול להיזרק מכל מיני סיבות, שאף אחת מהן לא נחשפת למתקשר.

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

USE_SET_LOCATION_ENABLED

מזהה השינוי: 117835097

מצב ברירת המחדל: מופעל באפליקציות שמטרגטות ל-Android 11 (רמת API 30) או לגרסה חדשה יותר.

אפליקציות אדמין שמטרגטות ל-Android 11 לא יכולות יותר להשתמש ב-DevicePolicyManager.setSecureSetting(ComponentName, String, String) כדי לשנות את ההגדרה Settings.Secure.LOCATION_MODE שהוצאה משימוש. במקום זאת, צריך להשתמש ב-DevicePolicyManager.setLocationEnabled(ComponentName, boolean).