שינויים בהתנהגות: כל האפליקציות

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

חשוב גם לבדוק את רשימת השינויים בהתנהגות שמשפיעים רק על אפליקציות שמטרגטות ל-Android 14.

פונקציונליות עיקרית

כברירת מחדל, נדחות בקשות לתזמון התראות מדויקות

התראות מדויקות מיועדות להתראות שהמשתמשים רוצים לקבל, או לפעולות שצריכות להתרחש בשעה מדויקת. החל מגרסה 14 של Android, ההרשאה SCHEDULE_EXACT_ALARM לא מוענקת מראש לרוב האפליקציות החדשות שמותקנות ומטרגטות את Android מגרסה 13 ואילך – ההרשאה נדחית כברירת מחדל.

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

שידורים רשומים בהקשר מסוים מוכנסים לתור בזמן שהאפליקציות נמצאות במטמון

在 Android 14 中,当应用处于缓存状态时,系统可以将上下文注册的广播放入队列中。这与 Android 12(API 级别 31)为异步 binder 事务引入的队列行为类似。在清单中声明的广播不会加入队列,并且应用会从缓存状态中移除以进行广播传递。

当应用离开缓存状态(例如返回前台)时,系统会传递所有已加入队列的广播。某些广播的多个实例 可能会合并为一个广播。取决于其他因素,如系统 运行状况,则可能会从缓存状态中移除应用,以及之前排队 广播。

אפליקציות יכולות להפסיק רק את התהליכים שלהן ברקע

החל מ-Android 14, כשהאפליקציה קוראת ל-killBackgroundProcesses(), ה-API יכול לסגור רק את תהליכי הרקע של האפליקציה שלכם.

אם מעבירים את שם החבילה של אפליקציה אחרת, השיטה הזו לא משפיעה על תהליכי הרקע של אותה אפליקציה, ותופיע ההודעה הבאה ב-Logcat:

Invalid packageName: com.example.anotherapp

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

ערך ה-MTU מוגדר ל-517 עבור לקוח ה-GATT הראשון שמבקש MTU

החל מ-Android 14, סטאק ה-Bluetooth של Android פועל בהתאם ל-גרסה 5.2 של מפרט הליבה של Bluetooth באופן קפדני יותר, ומבקש את MTU של ATT ב-BLE ל-517 בייטים כשלקוח ה-GATT הראשון מבקש MTU באמצעות ה-API BluetoothGatt#requestMtu(int), ומתעלם מכל בקשות ה-MTU הבאות בחיבור ה-ACL הזה.

כדי להתמודד עם השינוי הזה ולשפר את האפליקציה, כדאי לשקול את האפשרויות הבאות:

  • מכשיר ההיקפי צריך להגיב לבקשת ה-MTU של מכשיר Android עם ערך סביר שאפשר להכיל במכשיר ההיקפי. הערך הסופי של ההסכם יהיה הערך המינימלי של הערך המבוקש ב-Android והערך שסופק בשלט הרחוק (לדוגמה, min(517, remoteMtu))
    • כדי להטמיע את התיקון הזה, יכול להיות שיהיה צורך בעדכון קושחה של הציוד ההיקפי
  • לחלופין, אפשר להגביל את הכתיבה של מאפייני GATT על סמך הערך המינימלי בין הערך הנתמך הידוע של ההתקן ההיקפי לבין השינוי ב-MTU שהתקבל
    • תזכורת: צריך להפחית 5 בייטים מהגודל הנתמך של הכותרות
    • לדוגמה: arrayMaxLength = min(SUPPORTED_MTU, GATT_MAX_ATTR_LEN(517)) - 5

סיבה חדשה לכך שאפליקציה יכולה להיכלל בקטגוריית ההמתנה המוגבלת

Android 14 引入了一种可将应用放入受限待机模式存储分区的新原因。由于 onStartJobonStopJobonBind 方法超时,应用的作业多次触发 ANR 错误。(如需了解对 onStartJobonStopJob 的更改,请参阅 JobScheduler 强化了回调和网络行为。)

如需跟踪应用是否已进入受限待机分桶,我们建议您在作业执行时使用 API UsageStatsManager.getAppStandbyBucket() 进行日志记录,或在应用启动时使用 UsageStatsManager.queryEventsForSelf() 进行日志记录。

‫mlock מוגבל ל-64 KB

ב-Android 14 (API ברמה 34) ואילך, הפלטפורמה מצמצמת את נפח הזיכרון המקסימלי שניתן לנעול באמצעות mlock() ל-64KB לכל תהליך. בגרסאות קודמות, המגבלה הייתה 64MB לכל תהליך. ההגבלה הזו משפרת את ניהול הזיכרון באפליקציות ובמערכת. כדי לשפר את העקביות במכשירים השונים, ב-Android 14 מתווסף בדיקת CTS חדשה למגבלה החדשה של mlock() במכשירים התואמים.

המערכת אוכפת את השימוש במשאבים של אפליקציות שנשמרו במטמון

从设计上讲,当应用的进程移至后台且没有任何其他应用进程组件在运行时,应用进程将处于缓存状态。此类应用进程可能会因系统内存压力而终止。在此状态下,Activity 实例在调用并返回 onStop() 方法后执行的任何工作均不可靠,强烈建议不要这样做。

Android 14 对此设计引入了一致性和强制执行要求。在应用进程进入缓存状态后不久,系统会禁止后台工作,直到进程组件重新进入生命周期的活跃状态。

使用框架支持的典型生命周期 API(例如服务JobSchedulerJetpack WorkManager)的应用应该不受这些变化的影响。

חוויית משתמש

שינויים בחוויית המשתמש בהתראות שלא ניתן לסגור

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

השינוי הזה חל על אפליקציות שמונעות ממשתמשים לסגור את החזית התראות על ידי הגדרה של Notification.FLAG_ONGOING_EVENT עד Notification.Builder#setOngoing(true) או NotificationCompat.Builder#setOngoing(true). ההתנהגות של FLAG_ONGOING_EVENT השתנתה כדי שהמשתמשים יוכלו לסגור את ההתראות האלה.

עדיין לא ניתן לסגור את סוגי ההתראות האלה: תנאים:

  • כשהטלפון נעול
  • אם המשתמש בוחר פעולת התראה מסוג ניקוי הכול (פעולה שעוזרת: פירוקים בטעות)

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

  • CallStyle התראות
  • בקר מדיניות מכשירים (DPC) וחבילות תמיכה לארגונים
  • התראות במדיה
  • חבילת ברירת המחדל של הבורר בחיפוש

מידע על אבטחת נתונים מוצג בצורה בולטת יותר

为了加强用户隐私保护,Android 14 增加了系统显示您在 Play 管理中心表单中声明的信息的位置数量。目前,用户可以在 Google Play 中的应用详情的数据安全部分查看此信息。

我们建议您查看应用的位置数据分享政策,并花一点时间对应用的 Google Play“数据安全”部分进行任何适用的更新。

如需了解详情,请参阅有关如何在 Android 14 上以更显眼的方式显示数据安全信息的指南。

נגישות

הגדלה לא לינארית של הגופן עד 200%

从 Android 14 开始,系统支持将字体放大至最高 200%,为用户提供更多无障碍选项。

如果您已使用可缩放像素 (sp) 单位来定义文本大小,这项更改可能不会对您的应用产生太大影响。不过,您应在启用最大字号 (200%) 的情况下执行界面测试,确保应用能够在不影响易用性的情况下适应较大的字号。

אבטחה

רמת ה-API המינימלית לטירגוט שאפשר להתקין

从 Android 14 开始,targetSdkVersion 低于 23 的应用无法安装。要求应用满足这些最低目标 API 级别要求有助于提高用户的安全性和隐私性。

恶意软件通常会以较旧的 API 级别为目标平台,以绕过在较新版本 Android 中引入的安全和隐私保护机制。例如,有些恶意软件应用使用 targetSdkVersion 22,以避免受到 Android 6.0 Marshmallow(API 级别 23)在 2015 年引入的运行时权限模型的约束。这项 Android 14 变更使恶意软件更难以规避安全和隐私权方面的改进限制。尝试安装以较低 API 级别为目标平台的应用将导致安装失败,并且 Logcat 中会显示以下消息:

INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 23, but found 7

在升级到 Android 14 的设备上,targetSdkVersion 低于 23 的所有应用都将继续保持安装状态。

如果您需要测试以旧版 API 级别为目标平台的应用,请使用以下 ADB 命令:

adb install --bypass-low-target-sdk-block FILENAME.apk

יכול להיות ששמות החבילות של בעלי התוכן המדיה יצונזרו

מאגר המדיה תומך בשאילתות לגבי העמודה OWNER_PACKAGE_NAME, שמציינת את האפליקציה ששמרה קובץ מדיה מסוים. החל מגרסה Android 14, הערך הזה מושמט אלא אם מתקיים לפחות אחד מהתנאים הבאים:

  • לאפליקציה ששמרה את קובץ המדיה יש שם חבילה שגלוי תמיד לאפליקציות אחרות.
  • האפליקציה ששולחת שאילתה לחנות המדיה מבקשת את ההרשאה QUERY_ALL_PACKAGES.

מידע נוסף על האופן שבו מערכת Android מסננת את החשיפה של חבילות למטרות פרטיות.

דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן.‏ Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.

עדכון אחרון: 2025-12-08 (שעון UTC).