שינויים במסגרת התאימות (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_COMPL ExitY

מזהה השינוי: 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_רשות_שינוי_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.

מידע נוסף על השינוי הזה זמין במאמר שינויים בקריאות חזרה (callbacks) ל-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). לפני השינוי הזה, המערכת התקשרה חזרה כדי לבצע את הפעולה שהועברה. אחרי השינוי, המערכת תתקשר חזרה כדי לבצע את הפעולה שביקשת או את כל הפעולות שהועברו, אם לא תציינו פעולה.

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) והוריאציות שלה בזמן שהן פועלות ברקע.

למידע נוסף על השינוי הזה, ראו תצוגות של הודעות חסומות בהתאמה אישית חסומות.

CHANGE_Limit_SAW_INTENT

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

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

כוונות (intents) שמשתמשות בפעולה 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, תוכלו לקרוא את הקטע Scoped storage בדף בנושא השינויים בנפח האחסון של Android ב-Android 11.

EMPTY_INTENT_ACTION_CATEGORY

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

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

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

FILTER_APPLICATION_QUERY

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

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

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

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

FORCE_ENABLE_SCOPED_STORAGE

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

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

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

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

למידע נוסף על השינויים באחסון המותאם לפרויקט ב-Android 11, אפשר לעיין בקטע אחסון מוגבל לפרויקט בדף בנושא השינויים באחסון ב-Android ב-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) ואילך, ה-method‏ 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, הקצאות זיכרון יערי מקומיות כוללות עכשיו תג שאינו אפס בבייט המשמעותי ביותר.

למידע נוסף, ראו תיוג של מצביע ערימה.

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 כדי להעביר יכולות בזמן השימוש מתהליך הלקוח לשירות מקושר.

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), לא תוכלו יותר לגשת לספריות מסוימות באמצעות פעולות הכוונה ACTION_OPEN_DOCUMENT ו-ACTION_OPEN_DOCUMENT_TREE. מידע נוסף על השינויים האלה זמין בקטע 'הגבלות גישה למסמכים' בדף שבו מוסבר על עדכוני הפרטיות שקשורים לאחסון ב-Android 11.

SELINUX_LATEST_CHANGES

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

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

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

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

THROW_SECURITY_EXCEPTIONS

מזהה שינוי: 147340954

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

לפני Android 11, הודעת השגיאה SecurityException הופיעה רק ב-API של setEnabled בגלל שגיאה בהרשאה. ב-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).