تغييرات السلوك: جميع التطبيقات

يتضمّن نظام Android 15 الأساسي تغييرات في السلوك قد تؤثر في تطبيقك. تنطبق التغييرات التالية في السلوك على جميع التطبيقات التي تعمل بنظام التشغيل Android 15: بغض النظر عن targetSdkVersion. يجب اختبار تطبيقك ثم تعديله حسب الحاجة لدعمها بشكل صحيح، حيثما ينطبق ذلك.

تأكد أيضًا من مراجعة قائمة تغييرات السلوك التي تؤثر في التطبيقات فقط التي تستهدف الإصدار 15 من نظام التشغيل Android

الوظيفة الأساسية

يعمل Android 15 على تعديل الإمكانات الأساسية المتنوعة لنظام Android أو توسيعها.

التغييرات على حالة توقُّف الطرد

يتمثل الغرض من حالة الحزمة FLAG_STOPPED (التي يمكن للمستخدمين المشاركة في إصدارات AOSP من خلال الضغط مع الاستمرار على رمز التطبيق واختيار "فرض الإيقاف") دائمًا في إبقاء التطبيقات في هذه الحالة إلى أن يزيلها المستخدم صراحةً من هذه الحالة من خلال تشغيل التطبيق مباشرةً أو التفاعل بشكل غير مباشر مع التطبيق (من خلال ورقة المشاركة أو التطبيق المصغّر أو اختيار التطبيق كخلفية متحركة، وما إلى ذلك). في Android 15، نجري تعديلات على سلوك النظام كي يتماشى مع هذا السلوك المقصود. يجب إزالة التطبيقات فقط من حالة التوقّف عن طريق اتخاذ إجراء مباشر أو غير مباشر من قِبل المستخدم.

لإتاحة السلوك المقصود، بالإضافة إلى القيود الحالية، يلغي النظام أيضًا كل عمليات الطلب قيد المراجعة عندما يبدأ التطبيق في حالة الإيقاف على جهاز يعمل بنظام التشغيل Android 15. عندما تؤدي إجراءات المستخدم إلى إزالة التطبيق من حالة الإيقاف، يتم إرسال بث ACTION_BOOT_COMPLETED إلى التطبيق، ما يتيح إعادة تسجيل أي نوايا في انتظار المراجعة.

يمكنك استدعاء طريقة ApplicationStartInfo.wasForceStopped() الجديدة للتأكد مما إذا تم إيقاف التطبيق.

دعم أحجام الصفحات التي تبلغ 16 كيلوبايت

في السابق، كان نظام التشغيل Android لا يدعم سوى أحجام صفحات الذاكرة التي تبلغ 4 كيلوبايت فقط، وقد تم تحسين أداء ذاكرة النظام لمتوسط إجمالي حجم الذاكرة الذي تستخدمه أجهزة Android عادةً. بدءًا من نظام التشغيل Android 15، يتوافق Android مع الأجهزة التي تم ضبطها على استخدام حجم صفحة يبلغ 16 كيلوبايت (16 كيلوبايت للأجهزة).

مع استمرار الشركات المصنّعة للأجهزة في إنشاء أجهزة ذات سعة أكبر من الذاكرة الفعلية (ذاكرة الوصول العشوائي)، من المرجَّح أن يتم ضبط العديد من هذه الأجهزة على أحجام صفحات بحجم 16 كيلوبايت (وفي النهاية أكبر) لتحسين أداء الأجهزة. تؤدي إضافة دعم إلى الأجهزة التي يبلغ حجمها 16 كيلوبايت إلى تمكين تطبيقك من العمل على هذه الأجهزة ومساعدة تطبيقك في الاستفادة من تحسينات الأداء المرتبطة به. لمساعدتك في حل هذه المشكلة، قدّمنا إرشادات حول كيفية التحقّق ممّا إذا كان تطبيقك قد تأثّر بهذا التغيير وكيفية إعادة إنشاء التطبيق (إن أمكن) وكيفية اختباره في بيئة بحجم 16 كيلوبايت باستخدام أدوات المحاكاة والأجهزة الفعلية.

الفوائد والمكاسب في الأداء

إنّ الأجهزة التي تم ضبطها بأحجام صفحات تبلغ 16 كيلوبايت تستخدِم ذاكرة أكبر قليلاً في المتوسط، ولكنّها تحصل أيضًا على تحسينات أداء متنوعة لكل من النظام والتطبيقات:

  • أوقات أقل لتشغيل التطبيقات أثناء تعرّض النظام لضغط الذاكرة: انخفاض بنسبة 3.16% في المتوسط، مع تحسينات أكثر أهمية (تصل إلى 30%) لبعض التطبيقات التي اختبرناها
  • استهلاك مخفض للطاقة أثناء تشغيل التطبيق: خفض بنسبة 4.56% في المتوسط
  • تشغيل أسرع للكاميرا: عند بدء تشغيل الجهاز باستخدام درجة حرارة أعلى بنسبة 4.48% في المتوسط، والتشغيل على البارد بسرعة أكبر بنسبة 6.60% في المتوسط
  • وقت تشغيل النظام المحسَّن: محسَّن بنسبة 1.5% (حوالي 0.8 ثانية) في المتوسط

تستند هذه التحسينات إلى اختبارنا الأولي، ومن المحتمل أن تختلف النتائج على الأجهزة الفعلية. سنقدم تحليلاً إضافيًا للمكاسب المحتملة للتطبيقات بينما نواصل اختبارنا.

التحقّق ممّا إذا كان تطبيقك متأثرًا بهذا التغيير

إذا كان تطبيقك يستخدم أي رموز برمجية أصلية، يجب عليك إعادة إنشاء تطبيقك مع دعم الأجهزة التي بحجم 16 كيلوبايت. إذا لم تكن متأكدًا مما إذا كان تطبيقك يستخدم رمزًا برمجيًا أصليًا، يمكنك استخدام أداة تحليل APK لتحديد ما إذا كان هناك أي رمز أصلي أم لا.

إذا كان تطبيقك لا يستخدم إلا رمزًا برمجيًا مكتوبًا بلغة برمجة Java أو بلغة Kotlin، بما في ذلك جميع المكتبات أو حِزم SDK، يعني ذلك أنّ تطبيقك سيكون متوافقًا مع الأجهزة التي يبلغ حجمها 16 كيلوبايت. ومع ذلك، ننصحك باختبار تطبيقك في بيئة بحجم 16 كيلوبايت للتأكّد من عدم حدوث تراجعات غير متوقّعة في سلوك التطبيق.

تغييرات مطلوبة في بعض التطبيقات لإتاحة المساحة الخاصة

Private space is a new feature in Android 15 that lets users create a separate space on their device where they can keep sensitive apps away from prying eyes, under an additional layer of authentication. Because apps in the private space have restricted visibility, some types of apps need to take additional steps to be able to see and interact with apps in a user's private space.

All apps

Because apps in the private space are kept in a separate user profile, similar to work profiles, apps shouldn't assume that any installed copies of their app that aren't in the main profile are in the work profile. If your app has logic related to work profile apps that make this assumption, you'll need to adjust this logic.

Launcher apps

If you develop a launcher app, you must do the following before apps in the private space will be visible:

  1. Your app must be assigned as the default launcher app for the device—that is, possessing the ROLE_HOME role.
  2. Your app must declare the ACCESS_HIDDEN_PROFILES normal permission in your app's manifest file.

Launcher apps that declare the ACCESS_HIDDEN_PROFILES permission must handle the following private space use cases:

  1. Your app must have a separate launcher container for apps installed in the private space. Use the getLauncherUserInfo() method to determine which type of user profile is being handled.
  2. The user must be able to hide and show the private space container.
  3. The user must be able to lock and unlock the private space container. Use the requestQuietModeEnabled() method to lock (by passing true) or unlock (by passing false) the private space.
  4. While locked, no apps in the private space container should be visible or discoverable through mechanisms such as search. Your app should register a receiver for the ACTION_PROFILE_AVAILABLE and ACTION_PROFILE_UNAVAILABLE broadcasts and update the UI in your app when the locked or unlocked state of the private space container changes. Both of these broadcasts include EXTRA_USER, which your app can use to refer to the private profile user.

    You can also use the isQuietModeEnabled() method to check whether the private space profile is locked or not.

App store apps

The private space includes an "Install Apps" button that launches an implicit intent to install apps into the user's private space. In order for your app to receive this implicit intent, declare an <intent-filter> in your app's manifest file with a <category> of CATEGORY_APP_MARKET.

تمت إزالة خط الرمز التعبيري المستند إلى PNG

The legacy, PNG-based emoji font file (NotoColorEmojiLegacy.ttf) has been removed, leaving just the vector-based file. Beginning with Android 13 (API level 33), the emoji font file used by the system emoji renderer changed from a PNG-based file to a vector based file. The system retained the legacy font file in Android 13 and 14 for compatibility reasons, so that apps with their own font renderers could continue to use the legacy font file until they were able to upgrade.

You can choose to adapt your app in a number of ways:

  • Use platform APIs for text rendering. You can render text to a bitmap-backed Canvas and use that to get a raw image if necessary.
  • Add COLRv1 font support to your app. The FreeType open source library supports COLRv1 in version 2.13.0 and higher.
  • As a last resort, you can bundle the legacy emoji font file (NotoColorEmoji.ttf) into your APK, although in that case your app will be missing the latest emoji updates. For more information, see the Noto Emoji GitHub project page.

تمت زيادة الحد الأدنى لإصدار حزمة تطوير البرامج (SDK) المستهدَف من 23 إلى 24

Android 15 builds on the the changes that were made in Android 14 and extends this security further. In Android 15, apps with a targetSdkVersion lower than 24 can't be installed. Requiring apps to meet modern API levels helps to ensure better security and privacy.

Malware often targets lower API levels in order to bypass security and privacy protections that have been introduced in higher Android versions. For example, some malware apps use a targetSdkVersion of 22 to avoid being subjected to the runtime permission model introduced in 2015 by Android 6.0 Marshmallow (API level 23). This Android 15 change makes it harder for malware to avoid security and privacy improvements. Attempting to install an app targeting a lower API level results in an installation failure, with a message like the following one appearing in Logcat:

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

On devices upgrading to Android 15, any apps with a targetSdkVersion lower than 24 remain installed.

If you need to test an app targeting an older API level, use the following ADB command:

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

الكاميرا والوسائط

يجري نظام Android 15 التغييرات التالية على سلوك الكاميرا والوسائط لجميع المستخدمين. التطبيقات.

يؤدي الآن تشغيل الصوت المباشر أو غير القابل للتنزيل إلى إلغاء صلاحية المقاطع الصوتية التي سبق فتحها بشكل مباشر أو غير معدَّل عند بلوغ الحدّ الأقصى لاستخدام الموارد.

Before Android 15, if an app requested direct or offload audio playback while another app was playing audio and the resource limits were reached, the app would fail to open a new AudioTrack.

Beginning with Android 15, when an app requests direct or offload playback and the resource limits are reached, the system invalidates any currently open AudioTrack objects which prevent fulfilling the new track request.

(Direct and offload audio tracks are typically opened for playback of compressed audio formats. Common use-cases for playing direct audio include streaming encoded audio over HDMI to a TV. Offload tracks are typically used to play compressed audio on a mobile device with hardware DSP acceleration.)

تجربة المستخدم وواجهة مستخدم النظام

يتضمن Android 15 بعض التغييرات التي تهدف إلى إنشاء صورة تجربة المستخدم السهلة.

ميزة "الصور المتحركة القائمة على التوقّعات" مفعَّلة للتطبيقات التي تم تفعيلها

Beginning in Android 15, the developer option for predictive back animations has been removed. System animations such as back-to-home, cross-task, and cross-activity now appear for apps that have opted in to the predictive back gesture either entirely or at an activity level. If your app is affected, take the following actions:

  • Ensure that your app has been properly migrated to use the predictive back gesture.
  • Ensure that your fragment transitions work with predictive back navigation.
  • Migrate away from animation and framework transitions and use animator and androidx transitions instead.
  • Migrate away from back stacks that FragmentManager doesn't know about. Use back stacks managed by FragmentManager or by the Navigation component instead.

يتم إيقاف التطبيقات المصغّرة عندما يفرض المستخدم إيقافًا لأحد التطبيقات

في حال فرض المستخدم إيقاف التطبيق على جهاز يعمل بالإصدار 15 من نظام Android، سيوقف النظام جميع أدوات التطبيق مؤقتًا. تظهر التطبيقات المصغّرة باللون الرمادي، ولا يمكن للمستخدم التفاعل معها. وذلك لأنّه بدءًا من Android 15، يلغي النظام جميع العناصر التي لا تزال في انتظار المراجعة للتطبيق عند فرض إيقافه.

يعيد النظام تفعيل هذه التطبيقات المصغّرة في المرة التالية التي يشغِّل فيها المستخدم التطبيق.

لمزيد من المعلومات، يُرجى الاطّلاع على مقالة التغييرات في حالة إيقاف الطرد.

عمليات الإيقاف نهائيًا

مع كل إصدار، قد تصبح واجهات برمجة تطبيقات Android معيَّنة قديمة أو يجب أن تكون إعادة تصميمه لتوفير تجربة أفضل للمطوّرين أو دعم نظام أساسي جديد والإمكانات. في هذه الحالات، سنوقف نهائيًا واجهات برمجة التطبيقات القديمة توجيه المطورين إلى واجهات برمجة تطبيقات بديلة لاستخدامها بدلاً من ذلك.

يعني الإيقاف أننا أنهينا الدعم الرسمي لواجهات برمجة التطبيقات، ولكن سيتم ستظل متاحة للمطورين. لمعرفة المزيد عن الجوانب البارزة في هذا الإصدار من نظام التشغيل Android، يمكنك الاطّلاع على صفحة عمليات الإيقاف النهائي.