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

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

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

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

ב-Android 15 יש שינויים או הרחבות של יכולות ליבה שונות במערכת Android.

שינויים במצב 'החבילה הופסקה'

软件包 FLAG_STOPPED 状态(用户可以通过长按应用图标并选择“强行停止”来参与 AOSP build)一直是为了让应用保持此状态,直到用户通过直接启动应用或间接与应用互动(通过 Sharesheet 或 widget、选择应用作为动态壁纸等)将应用从此状态明确移除。在 Android 15 中,我们将更新系统的行为,以符合这一预期行为。只能通过用户直接或间接操作将应用从停止状态中移除。

为了支持预期行为,除了现有限制之外,当应用在搭载 Android 15 的设备上进入停止状态时,系统还会取消所有待处理 intent。当用户的操作将应用从停止状态中移除时,系统会向应用传递 ACTION_BOOT_COMPLETED 广播,让用户有机会重新注册任何待处理的 intent。

您可以调用新的 ApplicationStartInfo.wasForceStopped() 方法来确认应用是否已置于停止状态。

תמיכה בדפים בגודל 16KB

בעבר הייתה ב-Android תמיכה רק בגודלי דפי זיכרון בגודל של 4KB, ביצוע אופטימיזציה של ביצועי זיכרון המערכת עבור הכמות הממוצעת של הזיכרון הכוללת בדרך כלל יש במכשירי Android. החל מ-Android 15, מערכת AOSP תומכת מכשירים שמוגדרים להשתמש בגודל דף של 16KB (16KB) מכשירים). אם באפליקציה נעשה שימוש בספריות NDK, ישירות או בעקיפין דרך SDK, תצטרכו לבנות את האפליקציה מחדש כדי פועלים במכשירים האלה בגודל 16KB.

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

כדי לעזור לך להוסיף תמיכה עבור האפליקציה, הכנו הנחיות בנושא בדיקה אם האפליקציה שלכם הושפעה, איך ליצור מחדש את האפליקציה (אם רלוונטי), ואיך לבדוק את האפליקציה סביבה של 16KB באמצעות אמולטורים (כולל Android 15) תמונות מערכת עבור אמולטור Android).

优势和性能提升

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

  • זמני השקה קצרים יותר של אפליקציות בזמן שהמערכת נמצאת בלחץ על הזיכרון: נמוך ב-3.16% בממוצע, עם שיפורים משמעותיים יותר (עד 30%) בחלק מהאפליקציות שבדקנו
  • צריכת חשמל מופחתת במהלך השקת האפליקציה: הפחתה של 4.56% בממוצע
  • הפעלה מהירה יותר של המצלמה: הפעלה מתוך הזיכרון (hot start) מהירה יותר ב-4.48% בממוצע, והפעלה מחדש (cold start) מהירה יותר ב-6.60% בממוצע
  • זמן הפעלה משופר של המערכת: שיפור של 8% (כ-950 אלפיות השנייה) בממוצע

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

检查您的应用是否受到影响

אם האפליקציה משתמשת בקוד מקומי, צריך ליצור מחדש את האפליקציה עם תמיכה במכשירים בנפח 16 KB. אם אתם לא בטוחים אם האפליקציה שלכם משתמשת בקוד מקומי, תוכלו להשתמש ב-APK Analyzer כדי לזהות אם יש קוד מקומי ואז לבדוק את ההתאמה של קטעי ELF בכל ספרייה משותפת שתמצאו.

אם האפליקציה שלכם משתמשת רק בקוד שנכתב בשפת התכנות Java או ב-Kotlin, כולל כל הספריות או ערכות ה-SDK, האפליקציה כבר תומכת במכשירים בנפח 16KB. עם זאת, מומלץ לבדוק את האפליקציה בסביבה של 16 KB כדי לוודא שאין נסיגות בלתי צפויות בהתנהגות האפליקציה.

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

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

כל האפליקציות

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

אפליקציות רפואיות

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

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

מהסיבות האלה, אם מפתחים אפליקציה רפואית, כדאי לבדוק איך התכונה הזו להשפיע על האפליקציה ולבצע פעולות מתאימות - כמו הודעה למשתמשים להתקין את האפליקציה במרחב הפרטי — כדי למנוע שיבושים באפליקציה הקריטית יכולות.

אפליקציות במרכז האפליקציות

אם מפתחים אפליקציית מרכז אפליקציות, צריך לבצע את הפעולות הבאות לפני האפליקציות המרחב הפרטי יהיה גלוי:

  1. עליך להקצות את האפליקציה שלך כאפליקציית ברירת המחדל למרכז האפליקציות עבור המכשיר – בעל התפקיד ROLE_HOME.
  2. האפליקציה שלך צריכה להצהיר על ACCESS_HIDDEN_PROFILES הרשאה רגילה בקובץ המניפסט של האפליקציה.

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

  1. לאפליקציה שלך חייב להיות מאגר אפליקציות נפרד עבור אפליקציות שמותקנות המרחב הפרטי. משתמשים בשיטה getLauncherUserInfo() כדי קביעת סוג פרופיל המשתמש המטופל.
  2. למשתמש צריכה להיות אפשרות להסתיר ולהציג את מאגר התגים של המרחב הפרטי.
  3. למשתמש צריכה להיות אפשרות לנעול את המאגר של המרחב הפרטי ולבטל את הנעילה שלו. כדאי להשתמש השיטה requestQuietModeEnabled() לנעילה (על ידי להעביר את true) או לבטל את הנעילה (על ידי העברת false) של המרחב הפרטי.
  4. בזמן נעילה, אף אפליקציה במאגר של המרחב הפרטי לא גלויה או באמצעות מנגנונים כמו חיפוש. האפליקציה שלך צריכה לרשום המקבל של ACTION_PROFILE_AVAILABLE וגם ACTION_PROFILE_UNAVAILABLE משדרים ומעדכנים את ממשק המשתמש באפליקציה כשהמרחב הפרטי במצב נעול או לא נעול שינויים במאגר. שני השידורים האלה כוללים EXTRA_USER, שהאפליקציה יכולה להשתמש בו כדי לעיין משתמש עם פרופיל פרטי.

    אפשר גם להשתמש בשיטה isQuietModeEnabled() כדי: לבדוק אם הפרופיל של המרחב הפרטי נעול.

אפליקציות בחנות האפליקציות

המרחב הפרטי כולל 'התקנת אפליקציות' לחצן שמפעיל מודל מרומז כוונה להתקין אפליקציות במרחב הפרטי של המשתמש. כדי שהאפליקציה שלך לקבל את הכוונה המרומזת הזו, צריך להצהיר על <intent-filter> בקובץ המניפסט של האפליקציה עם <category> מסוג CATEGORY_APP_MARKET.

גופן אמוג'י מבוסס-PNG הוסר

קובץ הגופן הקודם של אמוג'י מבוסס PNG (NotoColorEmojiLegacy.ttf) הוסר, נשאר רק הקובץ המבוסס על וקטור. החל מ-Android 13 (API ברמה 33), קובץ הגופן של האמוג'י ששימש את המערכת לעיבוד אמוג'י השתנה מקובץ PNG לקובץ מבוסס-וקטור. המערכת שמרה את קובץ הגופן הקודם ב-Android 13 ו-14 מטעמי תאימות, כדי אפליקציות עם כלים לעיבוד גופנים משלהן יוכלו להמשיך להשתמש בקובץ הגופנים הקודם עד לביצוע השדרוג.

כדי לבדוק אם האפליקציה מושפעת, כדאי לחפש בקוד האפליקציה הפניות אל קובץ NotoColorEmojiLegacy.ttf.

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

  • שימוש בממשקי API של הפלטפורמה לעיבוד טקסט. אפשר לעבד טקסט למגובה במפת סיביות (bitmap) Canvas ומשתמשים בה כדי לקבל תמונה גולמית במקרה הצורך.
  • הוספת תמיכה בגופן COLRv1 לאפליקציה. ספריית הקוד הפתוח של FreeType תומך ב-COLRv1 בגרסה 2.13.0 גבוהה יותר.
  • כמוצא אחרון, אפשר לקבץ את קובץ הגופן הקודם של האמוג'י (NotoColorEmoji.ttf) ל-APK, אבל במקרה כזה האפליקציה שלכם לא תכלול את עדכוני האמוג'י האחרונים. עבור מידע נוסף זמין במאמר פרויקט Noto אמוג'י ב-GitHub .

הגרסה המינימלית של SDK היעד הועלתה מ-23 ל-24

Android 15 מבוסס על השינויים שבוצעו ב-Android 14 ומרחיב את האבטחה הזו. ב-Android 15, אפליקציות עם לא ניתן להתקין את התוסף targetSdkVersion שמכיל פחות מ-24. דרישה שהאפליקציות צריכות לעמוד ברמות API מודרניות עוזרת לשמור על אבטחה טובה יותר פרטיות.

תוכנות זדוניות מכוונות לעיתים קרובות לרמות נמוכות יותר של API כדי לעקוף את האבטחה והפרטיות באמצעי ההגנה שהוכנסו לשימוש בגרסאות מתקדמות יותר של Android. לדוגמה, אפליקציות זדוניות מסוימות משתמשות ב-targetSdkVersion של 22 כדי להימנע מהתחייבות למודל ההרשאות בסביבת זמן הריצה שהוצג ב-2015 ב-Android 6.0 Marshmallow (רמת API 23). השינוי הזה ב-Android 15 מקשה על תוכנות זדוניות להימנע מאבטחה ושיפורים בפרטיות. ניסיון להתקין אפליקציה שמטרגטת ממשק API נמוך יותר יוביל לכשל בהתקנה, ותופיע הודעה כמו ההודעה הבאה מופיע ב-Logcat:

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

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

אם צריך לבדוק אפליקציה שמטרגטת רמת API ישנה יותר, אפשר להשתמש ב-ADB הבא הפקודה:

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

אבטחה ופרטיות

Android 15 引入了强大的措施来防范动态密码 (OTP) 欺诈并保护用户的敏感内容,重点是增强通知监听器服务和屏幕共享保护措施。主要增强功能包括从可供不可信应用访问的通知中隐去 OTP、在屏幕共享期间隐藏通知,以及在发布 OTP 时保护应用 activity。这些变更旨在保护用户的敏感内容,使其免受未经授权的操作者的侵害。

开发者需要注意以下事项,以确保其应用与 Android 15 中的变更兼容:

动态密码隐去

Android 会阻止实现 NotificationListenerService 的不受信任应用读取已检测到 OTP 的通知中的未隐去的内容。配套设备管理器关联等受信任应用不受这些限制。

屏幕共享保护

  • 在屏幕共享会话期间,系统会隐藏通知内容,以保护用户的隐私。如果应用实现了 setPublicVersion(),Android 会显示通知的公开版本,该版本在不安全情境中用作替换通知。否则,系统会隐去通知内容,不提供任何其他背景信息。
  • 系统会向远程观看者隐藏密码输入等敏感内容,以防止泄露用户的敏感信息。
  • 如果在屏幕共享期间检测到动态密码,系统会隐藏在该时间段内发布通知的应用的活动。应用内容在启动时会向远程查看器隐藏。
  • 除了 Android 自动识别敏感字段之外,开发者还可以使用 setContentSensitivity 手动将应用的部分标记为敏感,在屏幕共享期间,这些敏感字段会对远程观看者隐藏。
  • 开发者可以选择切换开发者选项下的停用屏幕共享防护选项,以便出于演示或测试目的豁免屏幕共享防护。默认的系统屏幕录制工具不受这些更改的影响,因为录制内容会保留在设备上。

מצלמה ומדיה

ב-Android 15 מתבצעים השינויים הבאים בהתנהגות של המצלמה והמדיה בכל האפליקציות.

הפעלת אודיו ישיר והעברת אודיו מבטלות טראקים של אודיו ישיר או של אודיו שהועברו בעבר כשמגיעים למגבלות המשאבים

在 Android 15 之前,如果某个应用在另一个应用正在播放音频时请求直接播放或分流音频播放,并且已达到资源限制,此应用将无法打开新的 AudioTrack

从 Android 15 开始,当应用请求直接或分流播放并且达到资源限制时,系统会使当前打开的所有 AudioTrack 对象失效,从而阻止执行新的轨道请求。

(直接和分流音轨通常会打开,以播放压缩的音频格式。播放直接音频的常见用例包括通过 HDMI 将编码音频流式传输到电视。分流轨道通常用于在具有硬件 DSP 加速的移动设备上播放压缩音频。)

חוויית משתמש וממשק המשתמש של המערכת

Android 15 כולל כמה שינויים שנועדו ליצור חוויית משתמש עקבית ואינטואיטיבית יותר.

אנימציות חיזוי של תנועת החזרה מופעלות באפליקציות שהביעו הסכמה

从 Android 15 开始,移除了预测性返回动画的开发者选项。现在,对于已完全或在 activity 级别选择启用预测性返回手势的应用,系统现在会显示“返回主屏幕”“跨任务”和“跨 activity”等系统动画。如果您的应用受到影响,请执行以下操作:

  • 确保您的应用已正确迁移,以使用预测性返回手势。
  • 确保您的 fragment 转换支持预测性返回导航。
  • 停止使用动画和框架转换,并改用 Animator 和 AndroidX 转换。
  • FragmentManager 不知道的返回堆栈中迁出。请改用由 FragmentManager 或 Navigation 组件管理的返回堆栈。

ווידג'טים מושבתים כשהמשתמש משבית אפליקציה בכוח

如果用户在搭载 Android 15 的设备上强行停止某个应用,系统会暂时停用该应用的所有 widget。这些 widget 会灰显,用户无法与它们互动。这是因为,从 Android 15 开始,当应用被强行停止时,系统会取消应用的所有待处理 intent。

系统会在用户下次启动应用时重新启用这些 widget。

如需了解详情,请参阅对软件包停止状态的更改

צ'יפ בסרגל הסטטוס של הקרנת המדיה מתריע למשתמשים על שיתוף מסך, הפעלת Cast והקלטה

יתרונות ושיפור בביצועים

איך בודקים אם האפליקציה שלכם מושפעת

תכונות שיצאו משימוש

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

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