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

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

يُرجى أيضًا مراجعة قائمة تغييرات السلوك التي تؤثّر فقط في التطبيقات التي تستهدف Android 11.

الخصوصية

يقدّم Android 11 تغييرات وقيودًا لتعزيز خصوصية المستخدم، بما في ذلك ما يلي:

  • أذونات لمرة واحدة: تمنح المستخدمين خيار منح إذن مؤقت بالوصول إلى الموقع الجغرافي والميكروفون والكاميرا وإذونات.
  • ظهور مربّع حوار الأذونات: يشير الرفض المتكرّر لأحد الأذونات إلى "عدم السؤال مرةً أخرى".
  • تدقيق الوصول إلى البيانات: يمكنك الاطّلاع على الأماكن التي يصل فيها تطبيقك إلى البيانات الخاصة، سواء في رمز التطبيق نفسه أو في رمز المكتبات التابعة.
  • أذونات نافذة تنبيه النظام: يتم تلقائيًا منح بعض فئات التطبيقات إذن SYSTEM_ALERT_WINDOW عند الطلب. بالإضافة إلى ذلك، تنقل دائمًا النوايا التي تتضمّن إجراء النية ACTION_MANAGE_OVERLAY_PERMISSION المستخدمين إلى شاشة في إعدادات النظام.
  • المعرّفات الثابتة لشريحة SIM: على Android 11 والإصدارات الأحدث، يتم تقييد الوصول إلى أرقام ICCID غير القابلة لإعادة الضبط من خلال getIccId() طريقة. تعرض الطريقة سلسلة فارغة غير فارغة. لتحديد شريحة SIM مثبّتة على الجهاز بشكلٍ فريد، استخدِم طريقة getSubscriptionId() بدلاً من ذلك. يوفّر رقم تعريف الاشتراك قيمة فهرس (تبدأ من 1) لتحديد شرائح SIM المثبّتة بشكلٍ فريد، بما في ذلك الشرائح الفعلية والإلكترونية. تكون قيمة هذا المعرّف ثابتة لشريحة SIM معيّنة ما لم تتم إعادة ضبط الجهاز على الإعدادات الأصلية.

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

إشعارات التعرّض لفيروس كورونا

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

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

الأمان

تستخدم مآخذ التوصيل الآمنة (SSL) محرّك Conscrypt SSL تلقائيًا

تستند عملية التنفيذ التلقائية لـ SSLSocket في Android إلى Conscrypt. منذ Android 11، يتم إنشاء عملية التنفيذ هذه داخليًا استنادًا إلى SSLEngine في Conscrypt.

مخصّص الذاكرة المحسّن Scudo

يستخدم Android 11 داخليًا مخصّص الذاكرة المحسّن Scudo لخدمة عمليات تخصيص الذاكرة المؤقتة. يمكن لـ Scudo رصد بعض أنواع انتهاكات أمان الذاكرة والتخفيف من حدّتها. إذا ظهرت لك أعطال مرتبطة بـ Scudo (مثل Scudo ERROR:) في تقارير الأعطال الأصلية، يُرجى الرجوع إلى مستندات تحديد مشاكل Scudo وحلّها.

إحصاءات استخدام التطبيق

لحماية المستخدمين بشكلٍ أفضل، يخزّن Android 11 إحصاءات استخدام التطبيق لكل مستخدم في وحدة تخزين مشفّرة باستخدام بيانات الاعتماد. لذلك، لا يمكن للنظام أو أي تطبيقات الوصول إلى هذه البيانات ما لم isUserUnlocked() تعرض القيمة true، ويحدث ذلك بعد أحد الإجراءَين التاليَين:

  • يفتح المستخدم قفل جهازه للمرة الأولى بعد بدء تشغيل النظام.
  • يبدّل المستخدم إلى حسابه على الجهاز.

إذا كان تطبيقك مرتبطًا حاليًا بمثيل من UsageStatsManager، تأكَّد من استدعاء الطرق في هذا العنصر بعد أن يفتح المستخدم قفل جهازه. وإلا، ستعرض واجهة برمجة التطبيقات الآن قيمًا فارغة أو قيمًا خالية.

دعم المحاكي لشبكات الجيل الخامس (5G)

يضيف Android 11 واجهات برمجة تطبيقات الجيل الخامس (5G) لتمكين تطبيقاتك من إضافة ميزات متطورة. لاختبار الميزات أثناء إضافتها، يمكنك استخدام الإمكانات الجديدة لمحاكي Android SDK. تمت إضافة الوظيفة الجديدة في الإصدار 30.0.22 من المحاكي. يؤدي اختيار إعداد شبكة الجيل الخامس (5G) إلى ضبط TelephonyDisplayInfo على OVERRIDE_NETWORK_TYPE_NR_NSA وتعديل النطاق الترددي المقدَّر والسماح لك بضبط استخدام البيانات المقاسة للتحقّق من أنّ تطبيقك يستجيب بشكلٍ مناسب للتغييرات في NET_CAPABILITY_TEMPORARILY_NOT_METERED حالة.

الأداء وتصحيح الأخطاء

تصحيح الأخطاء في حدود طلبات البيانات من واجهة برمجة التطبيقات JobScheduler

يوفّر Android 11 دعمًا لتصحيح الأخطاء في التطبيقات لتحديد عمليات استدعاء واجهة برمجة التطبيقات JobScheduler المحتمَلة التي تجاوزت حدودًا معيّنة للطلبات. يمكن للمطوّرين استخدام هذه الميزة لتحديد المشاكل المحتمَلة في الأداء. بالنسبة إلى التطبيقات التي تم ضبط سمة البيان debuggable على القيمة "صحيح"، ستعرض عمليات استدعاء واجهة برمجة التطبيقات JobScheduler التي تتجاوز حدود الطلبات RESULT_FAILURE. تم ضبط الحدود بطريقة لا تؤثّر في حالات الاستخدام المشروعة.

أداة تنظيف واصفات الملفات (fdsan)

قدّم Android 10 أداة fdsan (أداة تنظيف واصفات الملفات). ترصد fdsan سوء التعامل مع ملكية واصفات الملفات، مثل الاستخدام بعد الإغلاق والإغلاق المزدوج. يتغيّر الوضع التلقائي لـ fdsan في Android 11. تتوقف fdsan الآن عند رصد خطأ، بينما كان السلوك السابق هو تسجيل تحذير والمتابعة. إذا ظهرت لك أعطال بسبب fdsan في تطبيقك، يُرجى الرجوع إلى fdsan documentation.

قيود الواجهات غير المتوفّرة في حزمة SDK

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

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

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

لمزيد من المعلومات عن التغييرات في هذا الإصدار من Android، يُرجى الاطّلاع على التعديلات على قيود الواجهات غير المتوفّرة في حزمة SDK في Android 11. لمزيد من المعلومات عن الواجهات غير المتوفّرة في حزمة SDK بشكلٍ عام، يُرجى الاطّلاع على قيود الواجهات غير المتوفّرة في حزمة SDK.

تمت إزالة المكتبة المشتركة Maps v1

تمت إزالة الإصدار 1 من المكتبة المشتركة Maps بالكامل في Android 11. تم سابقًا إيقاف هذه المكتبة نهائيًا وتوقّفت عن العمل في التطبيقات على Android 10. على التطبيقات التي كانت تعتمد سابقًا على هذه المكتبة المشتركة للأجهزة التي تعمل بنظام Android 9 (مستوى واجهة برمجة التطبيقات 28) أو إصدار أقدم، استخدام حزمة تطوير البرامج (SDK) بالاستناد إلى بيانات خرائط Google للتطبيقات المتوافقة مع Android بدلاً من ذلك.

التفاعل مع التطبيقات الأخرى

مشاركة معرّفات موارد منتظمة للمحتوى

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

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

تحميل المكتبة

تحميل مكتبة ICU الشائعة باستخدام المسار المطلق

لا يمكن للتطبيقات التي تستهدف المستوى 28 من واجهة برمجة التطبيقات والإصدارات الأقدم استخدام dlopen(3) لتحميل libicuuc باستخدام المسار المطلق "/system/lib/libicuuc.so". بالنسبة إلى هذه التطبيقات، ستعرض الدالة dlopen("/system/lib/libicuuc.so", ...) مؤشرًا بقيمة فارغة.

بدلاً من ذلك، لتحميل المكتبة، يُرجى استخدام اسم المكتبة كاسم ملف، مثلاً dlopen("libicuuc.so", ...).