تتضمّن منصة 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 النظام الأساسي مع مراعاة نظام إشعارات التعرّض لفيروس كورونا. يمكن للمستخدمين الآن تشغيل تطبيقات "إشعارات التعرّض لفيروس كورونا المستجد (كوفيد-19)" على Android 11 بدون الحاجة إلى تفعيل إعداد الموقع الجغرافي للجهاز. هذا استثناء لنظام إشعارات التعرّض لفيروس كورونا فقط، نظرًا لأنّه تم تصميمه بطريقة لا يمكن للتطبيقات التي تستخدمه من خلالها استنتاج الموقع الجغرافي للجهاز من خلال البحث عن بلوتوث.
لحماية خصوصية المستخدم، لا يُسمح لجميع التطبيقات الأخرى بإجراء عملية البحث عن بلوتوث إلا إذا كان إعداد الموقع الجغرافي للجهاز مفعَّلاً ومنحها المستخدم إذن تحديد الموقع الجغرافي. يمكنك الاطّلاع على مزيد من المعلومات في منشورنا حول آخر الأخبار بشأن ميزة "إشعارات التعرّض لفيروس كورونا المستجد (كوفيد-19)".
الأمان
تستخدم مآخذ SSL محرّك Conscrypt SSL تلقائيًا
يستند تنفيذ SSLSocket التلقائي في Android إلى Conscrypt.
منذ الإصدار Android 11، يتم إنشاء هذا التنفيذ داخليًا على SSLEngine من Conscrypt.
Scudo Hardened Allocator
يستخدم Android 11
Scudo Hardened Allocator
داخليًا لتخصيص الذاكرة الديناميكية. بإمكان Scudo رصد بعض أنواع انتهاكات أمان الذاكرة والحدّ منها. إذا ظهرت لك أعطال متعلّقة بـ Scudo
(مثل Scudo ERROR:) في تقارير الأعطال الداخلية في نظام التشغيل، يُرجى الرجوع إلى مستندات
تحديد مشاكل Scudo وحلّها.
إحصاءات استخدام التطبيق
لتعزيز حماية المستخدمين، يخزّن Android 11 إحصاءات استخدام التطبيقات لكل مستخدم في مساحة تخزين مشفّرة لبيانات الاعتماد. لذلك،
لا يمكن للنظام أو أي تطبيقات الوصول إلى هذه البيانات ما لم
تُرجع الدالة isUserUnlocked()
القيمة true، وهو ما يحدث بعد تنفيذ أحد الإجراءات التالية:
- يفتح المستخدم قفل جهازه للمرة الأولى بعد بدء تشغيل النظام.
- يبدّل المستخدم إلى حسابه على الجهاز.
إذا كان تطبيقك مرتبطًا بمثيل من
UsageStatsManager، تأكَّد
من استدعاء الطرق على هذا العنصر بعد أن يفتح المستخدم قفل جهازه.
بخلاف ذلك، ستعرض واجهة برمجة التطبيقات الآن قيمًا فارغة أو خالية.
إتاحة المحاكي لشبكة الجيل الخامس
يضيف Android 11 واجهات برمجة تطبيقات لشبكات الجيل الخامس لتمكين تطبيقاتك من إضافة ميزات متطورة. لاختبار الميزات أثناء إضافتها، يمكنك استخدام الإمكانات الجديدة لمحاكي حزمة تطوير البرامج (SDK) لنظام التشغيل Android. تمت إضافة الوظيفة الجديدة في الإصدار 30.0.22 من المحاكي. يؤدي اختيار إعداد شبكة الجيل الخامس إلى ضبط 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 كلما أمكن ذلك.
إذا كان تطبيقك لا يستهدف الإصدار 11 من نظام التشغيل Android، قد لا تؤثر بعض هذه التغييرات فيك على الفور. ومع ذلك، على الرغم من أنّه يمكنك حاليًا استخدام بعض الواجهات غير المتوفّرة في حزمة SDK (وفقًا لمستوى واجهة برمجة التطبيقات المستهدَف في تطبيقك)، فإنّ استخدام أي طريقة أو حقل غير متوفّر في حزمة SDK ينطوي دائمًا على مخاطرة كبيرة بتعطُّل تطبيقك.
إذا لم تكن متأكدًا مما إذا كان تطبيقك يستخدم واجهات غير متوفّرة في حزمة SDK، يمكنك اختبار تطبيقك لمعرفة ذلك. إذا كان تطبيقك يعتمد على واجهات غير متوفّرة في حزمة SDK، عليك البدء في التخطيط للانتقال إلى بدائل حزمة SDK. ومع ذلك، ندرك أنّ بعض التطبيقات لديها حالات استخدام صالحة لاستخدام واجهات غير حِزم تطوير البرامج (SDK). إذا لم تتمكّن من العثور على بديل لاستخدام واجهة غير متوفّرة في حزمة SDK لميزة في تطبيقك، عليك طلب واجهة برمجة تطبيقات عامة جديدة.
لمزيد من المعلومات حول التغييرات في هذا الإصدار من Android، يمكنك الاطّلاع على التعديلات على القيود المفروضة على الواجهات غير المضمّنة في حزمة تطوير البرامج (SDK) في Android 11. لمزيد من المعلومات حول الواجهات غير المتوفّرة في حزمة SDK بشكل عام، يُرجى الاطّلاع على القيود المفروضة على الواجهات غير المتوفّرة في حزمة SDK.
تمت إزالة المكتبة المشتركة Maps v1
تمت إزالة الإصدار الأول من مكتبة "خرائط Google" المشتركة بالكامل في نظام التشغيل Android 11. تم إيقاف هذه المكتبة نهائيًا في السابق وتوقّفت عن العمل في التطبيقات على نظام التشغيل Android 10. بالنسبة إلى التطبيقات التي كانت تعتمد في السابق على هذه المكتبة المشتركة للأجهزة التي تعمل بنظام التشغيل Android 9 (مستوى واجهة برمجة التطبيقات 28) أو الإصدارات الأقدم، عليها استخدام حزمة تطوير البرامج بالاستناد إلى بيانات خرائط Google للتطبيقات المتوافقة مع Android بدلاً من ذلك.
التفاعل مع التطبيقات الأخرى
مشاركة معرّفات الموارد المنتظمة للمحتوى
إذا كان تطبيقك يشارك معرّف موارد منتظم للمحتوى مع تطبيق آخر، يجب أن يمنح الغرض أذونات الوصول إلى معرّف الموارد المنتظم من خلال ضبط علامة واحدة على الأقل من علامات الغرض التالية: FLAG_GRANT_READ_URI_PERMISSION وFLAG_GRANT_WRITE_URI_PERMISSION.
بهذه الطريقة، إذا كان التطبيق الآخر يستهدف الإصدار 11 من نظام التشغيل Android، سيظل بإمكانه الوصول إلى معرّف الموارد المنتظم للمحتوى. يجب أن يتضمّن تطبيقك علامات intent حتى عندما يكون معرّف الموارد المنتظم للمحتوى
مرتبطًا بأداة توفير محتوى لا يملكها تطبيقك.
إذا كان تطبيقك يملك أداة توفير المحتوى المرتبطة بمعرّف الموارد المنتظم للمحتوى، يُرجى التأكّد من أنّ أداة توفير المحتوى لم يتم تصديرها. ننصحك باتّباع أفضل الممارسات الأمنية هذه.
جارٍ تحميل المكتبة
جارٍ تحميل مكتبة ICU الشائعة باستخدام المسار المطلق
لا يمكن للتطبيقات التي تستهدف المستوى 28 أو أقل من واجهة برمجة التطبيقات استخدام dlopen(3) لتحميل libicuuc
باستخدام المسار المطلق "/system/lib/libicuuc.so". بالنسبة إلى هذه التطبيقات،
ستعرض واجهة برمجة التطبيقات dlopen("/system/lib/libicuuc.so", ...) مؤشرًا فارغًا.
بدلاً من ذلك، لتحميل المكتبة، يُرجى استخدام اسم المكتبة كاسم الملف، على سبيل المثال dlopen("libicuuc.so", ...).