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

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

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

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

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

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

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

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

أصبحت الحقول النهائية الثابتة غير قابلة للتعديل

لا يمكن للتطبيقات التي تعمل على الإصدار 17 من نظام التشغيل Android أو الإصدارات الأحدث وتستهدف الإصدار 17 من نظام التشغيل Android أو الإصدارات الأحدث تغيير حقول static final. إذا حاول تطبيق تغيير حقل static final باستخدام الانعكاس، سيؤدي ذلك إلى حدوث IllegalAccessException. سيؤدي محاولة تعديل أحد هذه الحقول من خلال واجهات برمجة تطبيقات JNI (مثل SetStaticLongField()) إلى تعطُّل التطبيق.

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

يُجري نظام التشغيل 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 التحسينات التالية على أمان الأجهزة والتطبيقات.

أمان النشاط

In Android 17, the platform continues its shift toward a "secure-by-default" architecture, introducing a suite of enhancements designed to mitigate high-severity exploits such as phishing, interaction hijacking, and confused deputy attacks. This update requires developers to explicitly opt in to new security standards to maintain app compatibility and user protection.

Key impacts for developers include:

  • BAL hardening & improved opt-in: We are refining Background Activity Launch (BAL) restrictions by extending protections to IntentSender. Developers must migrate away from the legacy MODE_BACKGROUND_ACTIVITY_START_ALLOWED constant. Instead, you should adopt granular controls like MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE, which restricts activity starts to scenarios where the calling app is visible, significantly reducing the attack surface.
  • Adoption tools: Developers should utilize strict mode and updated lint checks to identify legacy patterns and ensure readiness for future target SDK requirements.

إجراءات الحماية على المضيف المحلي

لتحسين أمان المنصة وخصوصية المستخدمين، يقدّم نظام التشغيل 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)

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.