نقل بيانات التطبيقات إلى الإصدار 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.

ملاحظة: يمكن تنزيل نسخة نظام محاكي Android 9 في استوديو Android 3.1 والإصدارات الأحدث، ويوفّر استوديو Android 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 أكثر صرامةً ويتّبع معيار يونيكود.
تم حظر الوصول إلى الكاميرا والميكروفون وأدوات الاستشعار في التطبيقات غير النشطة. عندما تكون التطبيقات غير نشِطة، لن تتمكّن من الوصول إلى الكاميرا أو الميكروفون أو أدوات استشعار "مدير الاستشعار".

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

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

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

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

ملاحظة: إنّ الخطوات الموضّحة أعلاه لضمان التوافق مع النظام الأساسي هي شرط أساسي لاستهداف تطبيقك على الإصدار 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

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

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

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

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

تغيير ملخّص
إذن الخدمة التي تعمل في المقدّمة على التطبيقات التي تريد استخدام الخدمات التي تعمل في المقدّمة أن تطلب الآن الإذن FOREGROUND_SERVICE أولاً. هذا إذن عادي، لذا يمنحه النظام تلقائيًا التطبيق الذي يقدّم الطلب. يؤدي بدء خدمة تعمل في المقدّمة بدون الحصول على إذن إلى ظهور SecurityException.
إيقاف رموز قلعة Bouncy يوقف نظام Android 9 رموزًا متعدّدة من موفِّر Bouncy Castle لصالح هذه الرموز التي يوفّرها موفِّر Conscrypt. تؤدي المكالمات التي يتم إجراؤها إلى getInstance() والتي تطلب مقدّم خدمة Bouncy 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، بما في ذلك تمرير FD.

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

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