בדומה לגרסאות קודמות, Android 17 כולל שינויים בהתנהגות שעשויים להשפיע על האפליקציה שלכם. שינויי ההתנהגות הבאים רלוונטיים רק לאפליקציות שמטרגטות את Android 17 ואילך. אם האפליקציה שלכם מטרגטת את Android מגרסה 17 ואילך, אתם צריכים לשנות את האפליקציה כדי שהיא תתמוך בהתנהגויות האלה, במקרים הרלוונטיים.
חשוב גם לבדוק את רשימת השינויים בהתנהגות שמשפיעים על כל האפליקציות שפועלות ב-Android 17, בלי קשר ל-targetSdkVersion של האפליקציה.
פונקציונליות עיקרית
Android 17 כוללת את השינויים הבאים, שמשנים או מרחיבים יכולות ליבה שונות של מערכת Android.
הטמעה חדשה של MessageQueue שלא דורשת נעילה
Beginning with Android 17, apps targeting Android 17
or higher receive a new lock-free implementation of
android.os.MessageQueue. The new implementation improves performance and
reduces missed frames, but may break clients that reflect on MessageQueue
private fields and methods.
For more information, including mitigation strategies, see MessageQueue behavior change guidance.
נגישות
ב-Android 17 בוצעו השינויים הבאים כדי לשפר את הנגישות.
תמיכה בנגישות של הקלדה במקלדת פיזית באמצעות כלי IME מורכבים
This feature introduces new AccessibilityEvent and TextAttribute
APIs to enhance screen reader spoken feedback for CJKV language input. CJKV IME
apps can now signal whether a text conversion candidate has been selected during
text composition. Apps with edit fields can specify text change types when
sending text changed accessibility events.
For example, apps can specify that a text change occurred during text
composition, or that a text change resulted from a commit.
Doing this enables accessibility
services such as screen readers to deliver more precise feedback based on the
nature of the text modification.
App adoption
IME Apps: When setting composing text in edit fields, IMEs can use
TextAttribute.Builder.setTextSuggestionSelected()to indicate whether a specific conversion candidate was selected.Apps with Edit Fields: Apps that maintain a custom
InputConnectioncan retrieve candidate selection data by callingTextAttribute.isTextSuggestionSelected(). These apps should then callAccessibilityEvent.setTextChangeTypes()when dispatchingTYPE_VIEW_TEXT_CHANGEDevents. Apps targeting Android 17 that use the standardTextViewwill have this feature enabled by default. (That is,TextViewwill handle retrieving data from the IME and setting text change types when sending events to accessibility services).Accessibility Services: Accessibility services that process
TYPE_VIEW_TEXT_CHANGEDevents can callAccessibilityEvent.getTextChangeTypes()to identify the nature of the modification and adjust their feedback strategies accordingly.
אבטחה
ב-Android 17 בוצעו השיפורים הבאים באבטחת המכשירים והאפליקציות.
אבטחת פעילות
ב-Android 17, הפלטפורמה ממשיכה את המעבר לארכיטקטורה של "אבטחה כברירת מחדל", ומציגה חבילת שיפורים שנועדו לצמצם את הסיכון לניצול לרעה של פרצות חמורות כמו פישינג, חטיפת אינטראקציות ומתקפות confused deputy. בעקבות העדכון הזה, המפתחים נדרשים להביע הסכמה מפורשת לתקני אבטחה חדשים כדי לשמור על תאימות האפליקציה ועל הגנת המשתמשים.
ההשפעות העיקריות על מפתחים כוללות:
- הגברת האבטחה של BAL ושיפור ההסכמה להצטרפות: אנחנו משפרים את ההגבלות על הפעלה של פעילות ברקע (BAL) על ידי הרחבת ההגנה ל-
IntentSender. המפתחים צריכים להפסיק להשתמש בקבועMODE_BACKGROUND_ACTIVITY_START_ALLOWEDמדור קודם. במקום זאת, מומלץ להשתמש באמצעי בקרה מפורטים כמוMODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE, שמגביל את הפעלת הפעילות לתרחישים שבהם האפליקציה המתקשרת גלויה, וכך מצמצם באופן משמעותי את שטח הפנים של המתקפה. - כלים להטמעה: מפתחים צריכים להשתמש במצב קפדני ובבדיקות lint מעודכנות כדי לזהות דפוסים מדור קודם ולהבטיח שהם מוכנים לדרישות עתידיות של SDK לטירגוט.
הגנות ב-localhost
To improve platform security and user privacy, Android 17
introduces a new install-time permission, USE_LOOPBACK_INTERFACE. This change
restricts cross-app and cross-profile communication over the loopback interface
(for example, 127.0.0.1 or ::1), which was previously implicitly allowed
with the INTERNET permission. For apps targeting
Android 17 or higher, the following rules apply:
- Mutual consent required: cross-app and cross-profile communication is
now blocked by default. For a connection to succeed, both the sending app
and the receiving app must explicitly declare the
USE_LOOPBACK_INTERFACEpermission in their manifests. - Intra-app traffic exempt: Loopback communication within the same app (intra-app communication) remains unaffected and does not require this new permission.
- Target SDK behavior:
- App targets Android 17 or higher: The permission
must be explicitly requested. If it is missing, socket operations (such
as TCP connect or UDP send) fail, typically returning an
EPERM(operation not permitted) error. - App targets API level 36 or lower: The permission is
treated as a split permission on
INTERNET. Apps targeting lower API levels are auto-granted this permission if they holdINTERNET.
- App targets Android 17 or higher: The permission
must be explicitly requested. If it is missing, socket operations (such
as TCP connect or UDP send) fail, typically returning an
- Compatibility warning: If a receiving app updates its target to Android 17 but fails to request this permission, incoming connections from other apps are be rejected, even if the sending app targets a lower API level.
הפעלה של CT כברירת מחדל
אם אפליקציה מטרגטת ל-Android 17 ואילך, שקיפות האישורים (CT) מופעלת כברירת מחדל. (ב-Android 16, התכונה CT זמינה, אבל האפליקציות צריכות להצטרף אליה).
DCL מקורי מאובטח יותר – C
If your app targets Android 17 or higher, the Safer Dynamic Code Loading (DCL) protection introduced in Android 14 for DEX and JAR files now extends to native libraries.
All native files loaded using System.load() must be marked as read-only.
Otherwise, the system throws UnsatisfiedLinkError.
We recommend that apps avoid dynamically loading code whenever possible, as doing so greatly increases the risk that an app can be compromised by code injection or code tampering.
גורמי צורה של מכשירים
Android 17 כוללת את השינויים הבאים לשיפור חוויית המשתמש במגוון גדלים וסוגים של מכשירים.
שינויים ב-API של הפלטפורמה כדי להתעלם מהגבלות על כיוון, שינוי גודל ויחס גובה-רוחב במסכים גדולים (sw>=600dp)
We introduced Platform API changes in Android 16 to ignore orientation, aspect ratio, and resizability restrictions on large screens (sw >= 600dp) for apps targeting API level 36 or higher. Developers have the option to opt out of these changes with SDK 36, but this opt-out will no longer be available for apps that target Android 17 or higher.
For more information, see Restrictions on orientation and resizability are ignored.