בדומה לגרסאות קודמות, Android 17 כולל שינויים בהתנהגות שעשויים להשפיע על האפליקציה שלכם. שינויי ההתנהגות הבאים רלוונטיים רק לאפליקציות שמטרגטות את Android 17 ואילך. אם האפליקציה שלכם מטרגטת את Android מגרסה 17 ואילך, אתם צריכים לשנות את האפליקציה כדי שהיא תתמוך בהתנהגויות האלה, במקרים הרלוונטיים.
חשוב גם לבדוק את רשימת השינויים בהתנהגות שמשפיעים על כל האפליקציות שפועלות ב-Android 17, בלי קשר ל-targetSdkVersion של האפליקציה.
פונקציונליות עיקרית
Android 17 כוללת את השינויים הבאים, שמשנים או מרחיבים יכולות ליבה שונות של מערכת Android.
הטמעה חדשה של MessageQueue שלא דורשת נעילה
החל מ-Android 17, אפליקציות שמטרגטות את Android 17 (רמת API 37)
או גרסאות חדשות יותר מקבלות הטמעה חדשה ללא נעילה של
android.os.MessageQueue. ההטמעה החדשה משפרת את הביצועים ומפחיתה את מספר הפריימים החסרים, אבל היא עלולה לגרום לשיבוש בלקוחות שמשקפים שדות ושיטות פרטיים.MessageQueue
מידע נוסף, כולל אסטרטגיות להפחתת הסיכון, זמין במאמר הנחיות לשינוי התנהגות של MessageQueue.
שדות סופיים סטטיים לא ניתנים לשינוי
באפליקציות שפועלות ב-Android 17 ומעלה ומטרגטות ל-Android 17 (רמת API 37) ומעלה, אי אפשר לשנות שדות static final. אם אפליקציה מנסה לשנות שדה static final באמצעות רפלקציה, היא תגרום ל-IllegalAccessException. ניסיון לשנות אחד מהשדות האלה באמצעות ממשקי JNI API (כמו SetStaticLongField()) יגרום לקריסת האפליקציה.
נגישות
ב-Android 17 בוצעו השינויים הבאים כדי לשפר את הנגישות.
תמיכה בנגישות של הקלדה במקלדת פיזית באמצעות כלי IME מורכבים
התכונה הזו כוללת ממשקי API חדשים של AccessibilityEvent ושל TextAttribute
שמשפרים את קורא המסך הקולי לקלט בשפות CJKV. אפליקציות של CJKV IME יכולות עכשיו לסמן אם נבחר מועמד להמרת טקסט במהלך כתיבת הטקסט. אפליקציות עם שדות עריכה יכולות לציין סוגים של שינויי טקסט כששולחים אירועי נגישות של שינוי טקסט.
לדוגמה, אפליקציות יכולות לציין ששינוי בטקסט התרחש במהלך כתיבת הטקסט, או ששינוי בטקסט נבע מביצוע commit.
הפעולה הזו מאפשרת לשירותי נגישות כמו קוראי מסך לספק משוב מדויק יותר על סמך אופי השינוי בטקסט.
אימוץ האפליקציה
אפליקציות IME: כשמגדירים כתיבת טקסט בשדות עריכה, אפליקציות IME יכולות להשתמש ב-
TextAttribute.Builder.setTextSuggestionSelected()כדי לציין אם נבחר מועמד ספציפי להמרה.אפליקציות עם עריכת שדות: אפליקציות ששומרות
InputConnectionמותאם אישית יכולות לאחזר נתונים של בחירת מועמדים על ידי קריאה ל-TextAttribute.isTextSuggestionSelected(). האפליקציות האלה צריכות לקרוא ל-AccessibilityEvent.setTextChangeTypes()כששולחים אירועיTYPE_VIEW_TEXT_CHANGED. באפליקציות שמטרגטות ל-Android 17 (רמת API 37) ומשתמשות ב-TextViewהרגיל, התכונה הזו מופעלת כברירת מחדל. (כלומר,TextViewיטפל באחזור נתונים מ-IME ובהגדרת סוגי שינויים בטקסט כששולחים אירועים לשירותי נגישות).שירותי נגישות: שירותי נגישות שמבצעים עיבוד של אירועים מסוג
TYPE_VIEW_TEXT_CHANGEDיכולים לקרוא ל-AccessibilityEvent.getTextChangeTypes()כדי לזהות את אופי השינוי ולהתאים את אסטרטגיות המשוב שלהם בהתאם.
פרטיות
Android 17 כוללת את השינויים הבאים לשיפור הפרטיות של המשתמשים.
ההגדרה ECH (הצפנת Client Hello) מופעלת באופן אופציונלי
Android 17 introduces platform support for Encrypted Client Hello (ECH), a TLS extension that enhances user privacy by encrypting the Server Name Indication (SNI) in the TLS handshake. This encryption helps prevent network observers from easily identifying the specific domain your app is connecting to.
For apps targeting Android 17 (API level 37) or higher, ECH is opportunistically used for TLS connections. ECH is active only if the networking library used by the app (for example, HttpEngine, WebView, or OkHttp) has integrated ECH support and the remote server also supports the ECH protocol. If ECH cannot be negotiated, the connection automatically falls back to a standard TLS handshake without SNI encryption.
To allow apps to customize this behavior, Android 17 adds a new
<domainEncryption> element to the Network Security Configuration file.
Developers can use <domainEncryption> within <base-config> or
<domain-config> tags to select an ECH mode (for example,
"opportunistic", "enabled", or "disabled") on a global or per-domain
basis.
For more information, see the Encrypted Client Hello documentation.
נדרשת הרשאה לגישה לרשת המקומית באפליקציות שמיועדות ל-Android 17
ב-Android 17 נוספה הרשאת זמן הריצה ACCESS_LOCAL_NETWORK כדי להגן על המשתמשים מפני גישה לא מורשית לרשת המקומית. ההרשאה הזו נכללת בקבוצת ההרשאות הקיימת NEARBY_DEVICES, ולכן משתמשים שכבר העניקו הרשאות אחרות של NEARBY_DEVICES לא יתבקשו לאשר אותה שוב. הדרישה החדשה הזו מונעת מאפליקציות זדוניות לנצל גישה בלתי מוגבלת לרשת המקומית כדי לעקוב אחרי משתמשים ולזהות אותם ללא ידיעתם. האפליקציה יכולה לגלות מכשירים ברשת המקומית (LAN), כמו מכשירים לבית חכם או מכשירי Cast, ולהתחבר אליהם באמצעות הצהרה על ההרשאה הזו ובקשתה.
באפליקציות שמטרגטות ל-Android 17 (רמת API 37) ומעלה, יש עכשיו שתי דרכים לשמור על תקשורת עם מכשירים ברשת מקומית: שימוש בכלי לבחירת מכשירים שמופעל על ידי המערכת ושומר על הפרטיות כדי לדלג על בקשת ההרשאה, או בקשה מפורשת של ההרשאה החדשה הזו בזמן הריצה כדי לשמור על תקשורת ברשת המקומית.
מידע נוסף זמין במאמר בנושא הרשאה לגישה לרשת המקומית.
הסתרת סיסמאות ממכשירים פיזיים
אם אפליקציה מיועדת ל-Android 17 (רמת API 37) ומעלה, והמשתמש משתמש במכשיר קלט פיזי (לדוגמה, מקלדת חיצונית), מערכת ההפעלה של Android מחילה את ההגדרה החדשה show_passwords_physical על כל התווים בשדה הסיסמה. כברירת מחדל, ההגדרה הזו מסתירה את כל התווים של הסיסמה.
מערכת Android מציגה את התו האחרון שהוקלד בסיסמה כדי לעזור למשתמש לראות אם הוא הקליד את הסיסמה בצורה שגויה. עם זאת, במקלדות חיצוניות גדולות יותר, הצורך הזה פחות משמעותי. בנוסף, למכשירים עם מקלדות חיצוניות יש לרוב מסכים גדולים יותר, מה שמגדיל את הסיכון שמישהו יראה את הסיסמה שהוקלדה.
אם המשתמש משתמש במסך המגע של המכשיר, המערכת מחילה את ההגדרה החדשה show_passwords_touch.
אבטחה
ב-Android 17 בוצעו השיפורים הבאים באבטחת המכשירים והאפליקציות.
אבטחת פעילות
In Android 17, the platform continues its shift toward a "secure-by-default" architecture, introducing a suite of enhancements designed to mitigate high-severity exploits such as phishing, interaction hijacking, and confused deputy attacks. This update requires developers to explicitly opt in to new security standards to maintain app compatibility and user protection.
Key impacts for developers include:
- BAL hardening & improved opt-in: We are refining Background Activity
Launch (BAL) restrictions by extending protections to
IntentSender. Developers must migrate away from the legacyMODE_BACKGROUND_ACTIVITY_START_ALLOWEDconstant. Instead, you should adopt granular controls likeMODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE, which restricts activity starts to scenarios where the calling app is visible, significantly reducing the attack surface. - Adoption tools: Developers should utilize strict mode and updated lint checks to identify legacy patterns and ensure readiness for future target SDK requirements.
הפעלה של CT כברירת מחדל
אם אפליקציה מטרגטת ל-Android 17 (רמת API 37) או לגרסה מתקדמת יותר, שקיפות האישורים (CT) מופעלת כברירת מחדל. (ב-Android 16, התכונה CT זמינה, אבל האפליקציות צריכות להצטרף אליה).
Safer Native DCL—C
אם האפליקציה מטרגטת ל-Android 17 (רמת API 37) או לגרסה מתקדמת יותר, ההגנה על טעינה דינמית (DCL) של קוד, שהוצגה ב-Android 14 לקובצי DEX ו-JAR, חלה עכשיו גם על ספריות Native.
כל הקבצים המקוריים שנטענו באמצעות System.load() צריכים להיות מסומנים כקריאה בלבד.
אחרת, המערכת תציג את השגיאה UnsatisfiedLinkError.
מומלץ להימנע ככל האפשר מטעינה דינמית של קוד באפליקציות, כי פעולה כזו מגדילה מאוד את הסיכון שאפליקציה תיפרץ על ידי הזרקת קוד או שינוי קוד.
הגבלת שדות של פרטים אישיים מזהים בתצוגת הנתונים של CP2
באפליקציות שמיועדות ל-Android 17 (API ברמה Android 17 (API ברמה 37)) ומעלה, ניהול אנשי הקשר 2 (CP2) מגביל את הגישה לכמה עמודות שמכילות פרטים אישיים מזהים (PII) בתצוגת הנתונים. כשהשינוי הזה מופעל, העמודות האלה מוסרות מתצוגת הנתונים כדי לשפר את הפרטיות של המשתמשים. העמודות המוגבלות כוללות:
אפליקציות שמשתמשות בעמודות האלה מ-ContactsContract.Data
יכולות לחלץ אותן מ-ContactsContract.RawContacts
במקום זאת, על ידי הצטרפות ל-RAW_CONTACT_ID.
אכיפה של בדיקות SQL מחמירות ב-CP2
באפליקציות שמיועדות ל-Android 17 (רמת API Android 17 (רמת API 37)) ומעלה, ניהול אנשי הקשר 2 (CP2) אוכף אימות קפדני של שאילתות SQL כשמנסים לגשת לטבלה ContactsContract.Data בלי הרשאה READ_CONTACTS.
בעקבות השינוי הזה, אם לאפליקציה אין הרשאה לREAD_CONTACTS, האפשרויות StrictColumns וStrictGrammar מוגדרות כשמבצעים שאילתה בטבלת ContactsContract.Data. אם שאילתה משתמשת בתבנית שלא תואמת לאלה, היא תידחה ותגרום להפעלת חריגה.
גורמי צורה של מכשירים
Android 17 כוללת את השינויים הבאים לשיפור חוויית המשתמש במגוון גדלים וסוגים של מכשירים.
שינויים ב-API של הפלטפורמה כדי להתעלם מהגבלות על כיוון, שינוי גודל ויחס גובה-רוחב במסכים גדולים (sw>=600dp)
הוספנו שינויים ב-API של הפלטפורמה ב-Android 16 כדי להתעלם מהגבלות על כיוון, יחס גובה-רוחב ושינוי גודל במסכים גדולים (sw >= 600dp) באפליקציות שמטרגטות לרמת API 36 ומעלה. מפתחים יכולים להשבית את השינויים האלה ב-SDK 36, אבל האפשרות הזו לא תהיה זמינה יותר לאפליקציות שמיועדות ל-Android 17 (רמת API 37) ומעלה.
מידע נוסף זמין במאמר בנושא התעלמות מהגבלות על כיוון ושינוי גודל.