تتضمّن منصة 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 معيّنة ما لم تتم إعادة ضبط الجهاز على الإعدادات الأصلية.
لمزيد من المعلومات، يُرجى الاطّلاع على صفحة الخصوصية.
إشعارات التعرّض لفيروس كورونا
يُعدّل نظام Android 11 المنصة مع مراعاة نظام إشعارات التعرّض لفيروس كورونا. يمكن للمستخدمين الآن تشغيل تطبيقات "إشعارات التعرّض لفيروس كورونا" على نظام التشغيل Android 11 بدون الحاجة إلى تفعيل إعدادات الموقع الجغرافي للجهاز. يُستثنى من ذلك "نظام إشعارات التعرّض لفيروس كورونا" فقط، لأنّه تم تصميمه بطريقة تمنع التطبيقات التي تستخدمه من استنتاج الموقع الجغرافي للجهاز من خلال فحص البلوتوث.
لحماية خصوصية المستخدم، يبقى من المحظور على جميع التطبيقات الأخرى تنفيذ عملية فحص تقنية Bluetooth ما لم يكن إعداد الموقع الجغرافي للجهاز مفعّلاً وقد منح المستخدم هذه التطبيقات إذن الوصول إلى الموقع الجغرافي. يمكنك الاطّلاع على مزيد من المعلومات في مشاركة آخر المعلومات حول "إشعارات التعرّض لفيروس كورونا".
الأمان
تستخدم مقابس SSL محرك SSL في Conscrypt تلقائيًا.
تعتمد طريقة تنفيذ 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"
تمت إزالة الإصدار الأول من المكتبة المشتركة لتطبيق "خرائط Google" بالكامل في نظام التشغيل Android 11. تم إيقاف هذه المكتبة نهائيًا في السابق، ولم تعُد تعمل مع التطبيقات في الإصدار 10 من Android. بالنسبة إلى التطبيقات التي كانت تعتمد سابقًا على هذه المكتبة المشتركة للأجهزة التي تعمل بنظام التشغيل 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", ...)
.