التغييرات في السلوك: التطبيقات التي تستهدف الإصدار 17 من Android أو الإصدارات الأحدث

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

احرص أيضًا على مراجعة قائمة التغييرات في السلوك التي تؤثر في جميع التطبيقات التي تعمل على Android 17 بغض النظر عن targetSdkVersion لتطبيقك.

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

يتضمّن نظام التشغيل Android 17 التغييرات التالية التي تعدّل أو توسّع العديد من الإمكانات الأساسية لنظام التشغيل Android.

تنفيذ جديد لـ MessageQueue بدون قفل

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

لمزيد من المعلومات، بما في ذلك استراتيجيات التخفيف من الآثار، يُرجى الاطّلاع على إرشادات تغيير سلوك MessageQueue.

تسهيل الاستخدام

يُجري نظام التشغيل Android 17 التغييرات التالية لتحسين ميزات تسهيل الاستخدام.

تسهيل استخدام لوحة المفاتيح الخارجية المعقّدة الخاصة بمحرّك IME

تقدّم هذه الميزة واجهات برمجة تطبيقات جديدة AccessibilityEvent وTextAttribute لتحسين الوصف الشفهي الذي يقدّمه قارئ الشاشة عند إدخال نص بلغات CJKV. يمكن لتطبيقات CJKV IME الآن الإشارة إلى ما إذا تم اختيار مرشح لتحويل النص أثناء إنشاء النص. يمكن للتطبيقات التي تحتوي على حقول تعديل تحديد أنواع تغيير النص عند إرسال أحداث تسهيل الاستخدام التي تشير إلى تغيير النص. على سبيل المثال، يمكن للتطبيقات تحديد أنّه تم تغيير النص أثناء إنشاء النص، أو أنّ تغيير النص نتج عن عملية إكمال. ويتيح ذلك لخدمات تسهيل الاستخدام، مثل قارئات الشاشة، تقديم ملاحظات أكثر دقة استنادًا إلى طبيعة تعديل النص.

عدد التطبيقات التي تستخدم حِزم SDK

  • تطبيقات IME: عند ضبط نص التأليف في حقول التعديل، يمكن لأدوات IME استخدام TextAttribute.Builder.setTextSuggestionSelected() للإشارة إلى ما إذا تم اختيار مرشح إحالة ناجحة معيّن.

  • التطبيقات التي تتضمّن حقول تعديل: التطبيقات التي تحتفظ InputConnection مخصّصًا يمكنها استرداد بيانات اختيار المرشّحين من خلال طلب TextAttribute.isTextSuggestionSelected(). بعد ذلك، يجب أن تستدعي هذه التطبيقات AccessibilityEvent.setTextChangeTypes() عند إرسال أحداث TYPE_VIEW_TEXT_CHANGED. سيتم تفعيل هذه الميزة تلقائيًا في التطبيقات التي تستهدف الإصدار 17 من نظام التشغيل Android والتي تستخدم TextView العادي. (أي أنّ TextView ستتولّى استرداد البيانات من محرّك IME وتحديد أنواع تغيير النص عند إرسال الأحداث إلى خدمات تسهيل الاستخدام).

  • خدمات تسهيل الاستخدام: يمكن لخدمات تسهيل الاستخدام التي تعالج أحداث TYPE_VIEW_TEXT_CHANGED استدعاء AccessibilityEvent.getTextChangeTypes() لتحديد طبيعة التعديل وتعديل استراتيجيات الملاحظات وفقًا لذلك.

الأمان

يُجري نظام التشغيل Android 17 التحسينات التالية على أمان الأجهزة والتطبيقات.

أمان النشاط

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

تشمل التأثيرات الرئيسية على المطوّرين ما يلي:

  • تحسين قيود BAL وتحسين خيار الموافقة: نعمل على تحسين قيود تشغيل النشاط في الخلفية (BAL) من خلال توسيع نطاق الحماية ليشمل IntentSender. على المطوّرين التوقّف عن استخدام الثابت القديم MODE_BACKGROUND_ACTIVITY_START_ALLOWED. بدلاً من ذلك، يجب استخدام عناصر تحكّم دقيقة، مثل MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE، التي تقصر عمليات بدء الأنشطة على السيناريوهات التي يكون فيها تطبيق الاتصال مرئيًا، ما يقلّل بشكل كبير من مساحة الهجوم.
  • أدوات التوافق: على المطوّرين استخدام الوضع الصارم وعمليات التحقّق المعدَّلة من أداة lint لتحديد الأنماط القديمة وضمان الاستعداد لمتطلبات حزمة تطوير البرامج (SDK) المستقبلية.

وسائل الحماية على الخادم المحلي

لتحسين أمان المنصة وخصوصية المستخدمين، يقدّم نظام التشغيل Android 17 إذنًا جديدًا عند التثبيت، وهو USE_LOOPBACK_INTERFACE. يقيّد هذا التغيير الاتصال بين التطبيقات وبين الملفات الشخصية عبر واجهة الاسترجاع (على سبيل المثال، 127.0.0.1 أو ::1)، والذي كان مسموحًا به ضمنيًا في السابق من خلال الإذن INTERNET. بالنسبة إلى التطبيقات التي تستهدف الإصدار 17 من نظام التشغيل Android أو الإصدارات الأحدث، تسري القواعد التالية:

  • يجب الحصول على موافقة متبادلة: يتم الآن تلقائيًا حظر التواصل بين التطبيقات وبين الملفات الشخصية. لكي ينجح الاتصال، يجب أن يوضّح كل من تطبيق الإرسال وتطبيق الاستقبال إذن USE_LOOPBACK_INTERFACE في ملفات البيان.
  • إعفاء عدد الزيارات داخل التطبيق: لا يتأثر التواصل عبر حلقة الإرجاع داخل التطبيق نفسه (التواصل داخل التطبيق) ولا يتطلّب هذا الإذن الجديد.
  • سلوك حزمة SDK المستهدَفة:
    • يستهدف التطبيق الإصدار 17 من نظام التشغيل Android أو الإصدارات الأحدث: يجب طلب الإذن بشكل صريح. وفي حال عدم توفّره، ستتعذّر عمليات المقبس (مثل الاتصال عبر TCP أو الإرسال عبر UDP)، وسيظهر عادةً الخطأ EPERM(العملية غير مسموح بها).
    • يستهدف التطبيق المستوى 36 أو أقل من واجهة برمجة التطبيقات: يتم التعامل مع الإذن على أنّه إذن مقسّم على الإصدار INTERNET. يتم منح هذا الإذن تلقائيًا للتطبيقات التي تستهدف مستويات أدنى من واجهة برمجة التطبيقات إذا كانت تتضمّن INTERNET.
  • تحذير بشأن التوافق: إذا حدّث تطبيق مستلِم مستوى واجهة برمجة التطبيقات المستهدَف إلى Android 17 بدون طلب هذا الإذن، سيتم رفض عمليات الربط الواردة من تطبيقات أخرى، حتى إذا كان التطبيق المُرسِل يستهدف مستوى واجهة برمجة تطبيقات أقل.

تفعيل ميزة "المحادثة الذكية" تلقائيًا

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

Safer Native DCL—C

إذا كان تطبيقك يستهدف الإصدار 17 من نظام التشغيل Android أو إصدارًا أحدث، ستشمل الحماية الأحدث لتحميل الرموز البرمجية الديناميكية (DCL) التي تم طرحها في الإصدار 14 من نظام التشغيل Android لملفات DEX وJAR المكتبات الأصلية.

يجب وضع علامة "للقراءة فقط" على جميع الملفات الأصلية التي يتم تحميلها باستخدام System.load(). بخلاف ذلك، يعرض النظام الخطأ UnsatisfiedLinkError.

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

أشكال الأجهزة

يتضمّن نظام التشغيل Android 17 التغييرات التالية لتحسين تجربة المستخدم على مجموعة من أحجام الأجهزة وعوامل الشكل.

تغييرات في واجهة برمجة التطبيقات الخاصة بالمنصة لتجاهل قيود الاتجاه وتغيير الحجم ونسبة العرض إلى الارتفاع على الشاشات الكبيرة (sw>=600dp)

أجرينا تغييرات على Platform API في Android 16 لتجاهل قيود الاتجاه ونسبة العرض إلى الارتفاع وإمكانية تغيير الحجم على الشاشات الكبيرة (sw >= 600dp) للتطبيقات التي تستهدف المستوى 36 من واجهة برمجة التطبيقات أو الإصدارات الأحدث. يمكن للمطوّرين إيقاف هذه التغييرات باستخدام الإصدار 36 من حزمة SDK، ولكن لن يكون هذا الخيار متاحًا للتطبيقات التي تستهدف الإصدار 17 من نظام التشغيل Android أو الإصدارات الأحدث.

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