שינויים במסגרת התאימות (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 עבור אפליקציות שמשתמשות בשיטה העמוסה מדי שאינה SDK onChange() שכוללת ארגומנט של מספר שלם 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.

מידע נוסף על השינוי הזה

BACKGROUND_RATIONALE_CHANGE_ID

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

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

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

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

CALLBACK_ON_CLEAR_CHANGE

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

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

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

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 מוגדר כ-ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA בהתאמה בקובץ המניפסט. בגרסאות קודמות של Android, שירותים שפועלים בחזית קיבלו באופן אוטומטי גישה למצלמה ולמיקרופון.

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

CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK

מזהה שינוי: 128611929

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

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

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

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) או לגרסה מתקדמת יותר.

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

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

FORCE_ENABLE_SCOPED_STORAGE

Change ID: Value: 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 מקומי יש עכשיו תג שאינו אפס בבייט המשמעותי ביותר.

מידע נוסף זמין במאמר בנושא תיוג של מצביעים ב-Heap.

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).