نقل بيانات التطبيقات إلى الإصدار 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 Manager ضِمن Android API 28 باسم صورة نظام Intel x86 Atom من Google APIs

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

التأكّد من التوافق مع الإصدار 9 من نظام التشغيل Android

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

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

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

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

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

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

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

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

اختبار تطبيقك على Android 9

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

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

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

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

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

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

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