نقل التطبيقات إلى الإصدار 9 من نظام Android

يقدّم Android 9 (المستوى 28 من واجهة برمجة التطبيقات) ميزات وواجهات برمجة تطبيقات جديدة يمكنك الاستفادة منها في تطبيقاتك، بالإضافة إلى التغييرات الجديدة في السلوك. يقدم لك هذا المستند نظرة عامة على خطوات نقل تطبيقاتك إلى Android 9 عبر مرحلتين رئيسيتين:

  1. ضمان التوافق الأساسي مع Android 9

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

  2. استهداف النظام الأساسي الجديد، والتجميع مع حزمة تطوير البرامج (SDK) لنظام التشغيل Android 9، والإصدار باستخدام ميزات Android 9

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

تحضير جهاز يعمل بنظام Android 9

إذا كان لديك جهاز متوافق، يمكنك الحصول على صورة نظام Android 9 لجهازك من الشركة المصنّعة. انقر هنا للاطّلاع على صور المصنع لأجهزة Pixel. تتوفر هنا تعليمات عامة حول تثبيت صورة النظام.

يمكنك أيضًا تنزيل صورة نظام Android 9 لاستخدامها في محاكي Android. وهي مدرَجة في أداة إدارة تطوير البرامج (SDK) ضمن واجهة برمجة تطبيقات Android 28 في شكل صورة نظام Intel x86 Atom للنظام في Google APIs.

ملاحظة: تتوفّر نسخة نظام المحاكي Android 9 للتنزيل في Android Studio 3.1 والإصدارات الأحدث، مع العلم أنّ الإصدار Android Studio 3.2 يوفّر أكبر قدر من التوافق. لمزيد من المعلومات، اطّلِع على الحصول على حزمة تطوير البرامج (SDK) لنظام التشغيل Android 9.

ضمان التوافق مع Android 9

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

ضمان التوافق مع Android 9 خطوة بخطوة

إجراء اختبار التوافق

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

مع ذلك، هناك جانب آخر في الاختبار: يقدّم Android 9 تغييرات على نظام Android الأساسي يمكن أن تؤثر في سلوك تطبيقك أو تعطّل التطبيق تمامًا، حتى إذا لم تغيِّر targetSdkVersion. لهذا السبب، من المهم أن تراجع التغييرات الرئيسية في الجدول 1، واختبار أي إصلاحات تقوم بتنفيذها لاستيعاب التغييرات.

الجدول 1. التغييرات الأساسية التي تؤثر في جميع التطبيقات التي تعمل على أجهزة Android 9.

تغيير ملخّص
القيود المفروضة على الواجهات غير المتوفّرة في حزمة تطوير البرامج (SDK) تم الآن حظر الوصول إلى واجهات معيّنة غير متوفّرة في حزمة SDK، سواء كان الوصول مباشرًا أو من خلال JNI أو من خلال الانعكاس. عند محاولة الوصول إلى الواجهات المحظورة، تظهر أخطاء مثل NoSuchFieldException وNoSuchMethodException. لمعرفة التفاصيل، يُرجى الاطّلاع على القيود المفروضة على الواجهات غير المتوفرة في حزمة SDK.
إزالة موفر خدمات التشفير اعتبارًا من نظام التشغيل Android 9، تمت إزالة مقدّم خدمة Crypto JCA. عند إجراء مكالمات إلى SecureRandom.getInstance("SHA1PRNG", "Crypto") سيتم عرض رمز NoSuchProviderException.
أداة أكثر صرامة لفك ترميز UTF-8 في نظام التشغيل Android 9، يكون برنامج فك ترميز UTF-8 للغة Java أكثر صرامة ويتبع معيار Unicode.
تم حظر الوصول إلى الكاميرا والميكروفون وأجهزة الاستشعار للتطبيقات غير النشِطة لفترة قصيرة. عندما تكون التطبيقات غير نشِطة، لن يعود بإمكانها الوصول إلى الكاميرا أو الميكروفون أو أدوات الاستشعار في "مدير الاستشعار".

للحصول على قائمة أكثر شمولاً بالتغييرات في السلوك لجميع التطبيقات التي تعمل بنظام التشغيل Android 9، يُرجى الاطّلاع على مستند تغييرات السلوك.

تحديث الإصدار المستهدَف واستخدام ميزات Android P

يوضّح هذا القسم كيفية تفعيل الدعم الكامل لنظام التشغيل Android 9 من خلال تحديث targetSdkVersion إلى الإصدار 28 وإضافة ميزات جديدة متوفّرة في الإصدار Android 9.

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

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

تحديث الإصدار المستهدَف واستخدام ميزات Android 9 التفصيلية

الحصول على حزمة تطوير البرامج (SDK) لنظام التشغيل Android 9

يمكنك الحصول على حِزم SDK لإنشاء تطبيقك يعمل بنظام التشغيل Android 9 باستخدام الإصدار 3.1 من "استوديو Android" أو إصدار أحدث. إذا لم تكن بحاجة إلى الميزات الجديدة في Android 9 حتى الآن وكنت تريد جمع البيانات بناءً على ذلك الإصدار من النظام الأساسي فقط، يمكنك استخدام Android Studio 3.1. يوفِّر استوديو Android 3.2 دعمًا كاملاً لميزات Android 9.

اختبار تطبيق Android 9

بعد اكتمال الاستعدادات الواردة أعلاه، يمكنك إنشاء تطبيقك واختباره بشكل أكبر للتأكّد من أنّه يعمل بشكل صحيح عند استهداف Android 9 (المستوى 28 من واجهة برمجة التطبيقات). وهذا وقت مناسب آخر لمراجعة إرشادات جودة التطبيقات الأساسية وأفضل الممارسات للاختبار.

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

يقدم الجدول 2 قائمة بهذه التغييرات مع روابط لمزيد من المعلومات.

الجدول 2. تشمل التغييرات الرئيسية التي تؤثّر في التطبيقات عند ضبط "targetSdkVersion" على 28.

تغيير ملخّص
إذن الخدمة التي تعمل في المقدّمة على التطبيقات التي تريد استخدام الخدمات التي تعمل في المقدّمة طلب إذن FOREGROUND_SERVICE أولاً. هذا إذن عادي، لذا يمنحه النظام تلقائيًا للتطبيق الذي يطلب الإذن. يؤدي بدء خدمة تعمل في المقدّمة بدون الحصول على إذن إلى إنشاء SecurityException.
إيقاف عمليات تشفير "قلعة بونسي" نهائيًا يوقف نظام التشغيل Android 9 عددًا كبيرًا من الرموز من موفِّر خدمة Boungy Castle لصالح تلك التي وفرها مزود Conscrypt. تؤدي المكالمات التي يتم إجراؤها إلى getInstance() والتي تطلب مقدّم خدمة Boouncey Castle إلى ظهور أخطاء NoSuchAlgorithmException. ولحلّ الأخطاء، لا تحدّد موفِّر خدمة في getInstance() (أي اطلب التنفيذ التلقائي).
إزالة إذن الوصول المباشر إلى "Build.serial" على التطبيقات التي تحتاج إلى معرّف Build.serial الآن طلب إذن READ_PHONE_STATE ثم استخدام طريقة Build.getSerial() الجديدة التي تمت إضافتها في Android 9.
مشاركة دليل بيانات WebView غير مسموح به لم يعُد بإمكان التطبيقات مشاركة دليل بيانات WebView واحد في جميع العمليات. إذا كان تطبيقك يتضمّن أكثر من عملية واحدة باستخدام WebView أو CookieManager أو أي واجهة برمجة تطبيقات أخرى في حزمة android.webkit، سيتعطّل تطبيقك عندما يتم استدعاء طريقة WebView الثانية.
تم حظر الوصول إلى دليل بيانات التطبيق بواسطة SELinux يفرض النظام وضع حماية SELinux لكل تطبيق مع قيود SELinux لكل تطبيق على دليل البيانات الخاصة لكل تطبيق. لا يُسمح الآن بالوصول مباشرةً إلى دليل بيانات تطبيق آخر من خلال المسار. يمكن للتطبيقات مواصلة مشاركة البيانات باستخدام آليات IPC، بما في ذلك من خلال ضبط فترات إعادة التوجيه.

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

لاستكشاف الميزات وواجهات برمجة التطبيقات الجديدة المتاحة في نظام التشغيل Android 9، يمكنك الاطّلاع على ميزات Android 9 وواجهات برمجة التطبيقات.