تتضمّن منصة Android 11 تغييرات في السلوك قد
تؤثر في تطبيقك. تنطبق تغييرات السلوك التالية على جميع التطبيقات عند
تشغيلها على Android 11، بغض النظر عن targetSdkVersion
. يجب
اختبار تطبيقك ثم تعديله حسب الحاجة لتفعيل هذه الميزات بشكل صحيح، حيث
ينطبق ذلك.
احرص أيضًا على مراجعة قائمة التغييرات في السلوك التي تؤثّر فقط في التطبيقات التي تستهدف الإصدار 11 من نظام التشغيل Android.
الخصوصية
يقدّم نظام Android 11 تغييرات وقيودًا لتعزيز خصوصية المستخدم، بما في ذلك ما يلي:
- الأذونات لمرة واحدة: تمنح المستخدمين خيار منح المزيد من الأذونات المؤقتة للوصول إلى الموقع الجغرافي والميكروفون والكاميرا.
- مستوى عرض مربع الحوار بشأن الإذن: تشير عمليات الرفض المتكررة للإذن إلى "عدم السؤال مرة أخرى".
- تدقيق الوصول إلى البيانات: يمكنك الحصول على إحصاءات عن الأماكن التي يصل فيها تطبيقك إلى البيانات الخاصة، سواء في رمز تطبيقك الخاص أو في رمز المكتبات المُستخدَمة.
- أذونات
نافذة تنبيهات النظام: تحصل فئات معيّنة من
التطبيقات تلقائيًا على إذن
SYSTEM_ALERT_WINDOW
عند الطلب. بالإضافة إلى ذلك، تنقل النوايا التي تتضمّنACTION_MANAGE_OVERLAY_PERMISSION
إجراء النية المستخدمين دائمًا إلى شاشة في إعدادات النظام. - المعرِّفات الدائمة
لشريحة SIM:
في Android 11 والإصدارات الأحدث، يتم حظر الوصول إلى معرّفات ICCID التي لا يمكن إعادة ضبطها من خلال
getIccId()
الطريقة. تُرجع الطريقة سلسلة فارغة غير فارغة. لتحديد شريحة SIM المثبَّتة على الجهاز بشكل فريد، استخدِم طريقةgetSubscriptionId()
بدلاً من ذلك. يقدّم رقم تعريف الاشتراك قيمة فهرس (تبدأ من 1) لتحديد شرائح SIM المثبّتة بشكل فريد، بما في ذلك شرائح SIM العادية والرقمية. تظل قيمة هذا المعرّف ثابتة لشريحة SIM معيّنة ما لم تتم إعادة ضبط الجهاز على الإعدادات الأصلية.
لمزيد من المعلومات، يُرجى الاطّلاع على صفحة الخصوصية.
إشعارات التعرّض لفيروس كورونا
يُعدّل نظام Android 11 المنصة مع مراعاة نظام إشعارات التعرّض لفيروس كورونا. يمكن للمستخدمين الآن تشغيل تطبيقات "إشعارات التعرّض لفيروس كورونا" على نظام التشغيل Android 11 بدون الحاجة إلى تفعيل إعدادات الموقع الجغرافي للجهاز. يُستثنى من ذلك "نظام إشعارات التعرّض لفيروس كورونا" فقط، لأنّه تم تصميمه بطريقة تمنع التطبيقات التي تستخدمه من استنتاج الموقع الجغرافي للجهاز من خلال فحص البلوتوث.
لحماية خصوصية المستخدم، يبقى من المحظور على جميع التطبيقات الأخرى تنفيذ عملية فحص باستخدام البلوتوث ما لم يكن إعداد الموقع الجغرافي للجهاز مفعّلاً ومنح المستخدم إذن تحديد الموقع الجغرافي للتطبيق. يمكنك الاطّلاع على مزيد من المعلومات في مشاركة آخر المعلومات حول "إشعارات التعرّض لفيروس كورونا".
الأمان
تستخدم مقابس طبقة المقابس الآمنة محرك Conscrypt SSL تلقائيًا.
يستند تنفيذ SSLSocket
التلقائي في Android إلى Conscrypt.
منذ Android 11، تم تنفيذ ذلك داخليًا
استنادًا إلى SSLEngine
من Conscrypt.
أداة تخصيص الموارد المشفَّرة من Scudo
يستخدم نظام التشغيل 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
فيها على true، ستؤدي عمليات استدعاء JobScheduler
API التي تتجاوز حدود المعدّل إلى عرض RESULT_FAILURE
.
يتمّ ضبط الحدود بحيث لا تتأثّر حالات الاستخدام المشروعة.
أداة تنظيف واصِف الملف (fdsan)
طرح نظام التشغيل Android 10 fdsan
(أداة تنظيف واصِف الملف).
يرصد fdsan
إساءة استخدام ملكية ملف الوصف، مثل
الاستخدام بعد الإغلاق والإغلاق المزدوج. سيتم تغيير الوضع التلقائي لتطبيق fdsan
في الإصدار
Android 11. يتم الآن إيقاف fdsan
عند رصد خطأ، وكان السلوك السابق هو تسجيل تحذير ومواصلة العمل. إذا كنت تواجه أعطالًا
بسبب fdsan
في تطبيقك، يُرجى الرجوع إلى
fdsan documentation
.
قيود الواجهات غير المتوفرة في حزمة SDK
يتضمّن الإصدار 11 من Android قوائم معدَّلة للواجهات غير المتوافقة مع حِزم تطوير البرامج (SDK) والتي تم حظرها استنادًا إلى التعاون مع مطوّري تطبيقات Android وأحدث الاختبار الداخلي. نحرص على توفّر بدائل عامة كلما أمكن ذلك قبل حظر الواجهات غير المتوفّرة في حزمة SDK.
إذا كان تطبيقك لا يستهدف الإصدار 11 من نظام التشغيل Android، قد لا تسري بعض هذه التغييرات عليك على الفور. ومع أنّه يمكنك حاليًا استخدام بعض واجهات غير حزمة SDK (استنادًا إلى مستوى واجهة برمجة التطبيقات المستهدَف في تطبيقك)، فإنّ استخدام أي طريقة أو حقل غير حزمة SDK ينطوي دائمًا على مخاطر عالية لتعطُّل تطبيقك.
إذا لم تكن متأكّدًا مما إذا كان تطبيقك يستخدم واجهات غير متوفّرة في حزمة SDK، يمكنك اختبار تطبيقك لمعرفة ذلك. إذا كان تطبيقك يعتمد على واجهات غير متوفرة في حزمة SDK، عليك بدء التخطيط لنقل البيانات إلى بدائل حزمة SDK. ومع ذلك، ندرك أنّ بعض التطبيقات لديها حالات استخدام صالحة لاستخدام واجهات غير متوفرة في حزمة SDK. إذا لم تتمكّن من العثور على بديل لاستخدام واجهة غير متوفرة في حزمة تطوير البرامج (SDK) لإحدى الميزات في تطبيقك، عليك طلب واجهة برمجة تطبيقات عامة جديدة.
للاطّلاع على مزيد من المعلومات عن التغييرات في هذا الإصدار من Android، اطّلِع على التعديلات على قيود واجهات غير حزمة SDK في Android 11. للاطّلاع على مزيد من المعلومات حول الواجهات غير المتوفّرة في حزمة SDK بشكل عام، اطّلِع على القيود المفروضة على الواجهات غير المتوفّرة في حزمة SDK.
إزالة المكتبة المشتركة في الإصدار 1 من "خرائط Google"
تمت إزالة الإصدار 1 من المكتبة المشتركة في "خرائط Google" بالكامل في الإصدار 11 من Android. تم إيقاف هذه المكتبة نهائيًا في السابق، ولم تعُد تعمل مع التطبيقات في Android 10. بالنسبة إلى التطبيقات التي كانت تعتمد سابقًا على هذه المكتبة المشتركة للأجهزة التي تعمل بنظام التشغيل Android 9 (المستوى 28 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم، يجب استخدام حزمة تطوير البرامج (SDK) لتطبيق "خرائط Google" لنظام التشغيل Android بدلاً من ذلك.
التفاعل مع تطبيقات أخرى
مشاركة معرّفات الموارد المنتظمة للمحتوى
إذا كان تطبيقك يشارك مع تطبيق آخر عنوان URI للمحتوى، يجب أن يمنح Intent إذنَي الوصول إلى URI
من خلال ضبط علامة واحدة على الأقل من علامات Intent التالية:
FLAG_GRANT_READ_URI_PERMISSION
و
FLAG_GRANT_WRITE_URI_PERMISSION
.
بهذه الطريقة، إذا كان التطبيق الآخر يستهدف الإصدار 11 من نظام التشغيل Android، سيظل بإمكانه الوصول إلى ملف تعريف الارتباط
URI للمحتوى. يجب أن يتضمّن تطبيقك علامات Intent حتى إذا كان عنوان URI للمحتوى مرتبطًا
بموفّر محتوى لا يملك تطبيقك.
إذا كان تطبيقك يملك مقدّم المحتوى المرتبط بعنوان URL للمحتوى، تأكّد من أنّ مقدّم المحتوى ليس مصدَّراً. ننصحك باتّباع هذه الممارسة كأفضل ممارسة للحفاظ على الأمان.
جارٍ تحميل المكتبة
تحميل مكتبة ICU الشائعة باستخدام المسار المطلق
لا يمكن للتطبيقات التي تستهدف المستوى 28 أو أقل لواجهة برمجة التطبيقات استخدام dlopen(3)
لتحميل libicuuc
بالمسار المطلق "/system/lib/libicuuc.so". بالنسبة إلى هذه التطبيقات، ستعرِض القيمة
dlopen("/system/lib/libicuuc.so", ...)
معرّفًا فارغًا.
بدلاً من ذلك، لتحميل المكتبة، يُرجى استخدام اسم المكتبة كاسم الملف، مثلاً dlopen("libicuuc.so", ...)
.