نقل البيانات إلى Android 8.0

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

  1. ضمان التوافق مع Android 8.0

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

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

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

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

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

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

إعداد جهاز يعمل بنظام التشغيل Android 8.0

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

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

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

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

تغيير ملخّص مرجع إضافي
إشعارات أقل تكرارًا بشأن رصد الموقع الجغرافي في الخلفية إذا كان تطبيقك يتلقّى تحديثات للموقع الجغرافي من إحدى الخدمات في الخلفية، سيحصل على تحديثات أقل في الوتيرة على الإصدار Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات) مقارنةً بإصدارات Android الأقدم. وعلى وجه التحديد، لا يمكن أن تتلقّى الخدمة التي تعمل في الخلفية إشعارات الموقع الجغرافي أكثر من بضع مرات في الساعة. ومع ذلك، عندما يكون تطبيقك يعمل في المقدّمة، لا يطرأ أي تغيير على معدّل تحديثات الموقع الجغرافي. الحد الأقصى للمواقع الجغرافية في الخلفية
net.hostname جهاز لم يعُد متوافقًا يؤدي طلب البحث في موقع النظام net.hostname إلى عرض نتيجة فارغة. بدون تحديد نمط
استثناء جديد من send(DatagramPacket) تعرض الطريقة send(DatagramPacket) الخطأ SocketException إذا تعذّر تنفيذ طريقة connect(InetAddress, int) التي تم تنفيذها سابقًا. التغييرات في السلوك: الاتصال بالشبكة وبروتوكول HTTP(S)
اختيار NullPointerException بشكل صحيح من طريقتَين (AbstractCollection) أصبح التنسيق AbstractCollection.removeAll(null) وAbstractCollection.retainAll(null) الآن يؤديان إلى عرض NullPointerException دائمًا. في السابق، لم يكن يتم طرح NullPointerException عندما كانت المجموعة فارغة. هذا التغيير يجعل السلوك متسقًا مع التوثيق. التغيُّرات في السلوك: معالجة المجموعات
NullPointerException مناسب من Currency.getDisplayName(null) يؤدي طلب الرقم Currency.getDisplayName(null) إلى عرض خطأ NullPointerException. التغيُّرات في السلوك: اللغات والتدويل

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

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

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

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

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

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

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

يمكنك الحصول على حِزم SDK لإنشاء تطبيقك يعمل بالإصدار Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات) باستخدام أحدث إصدار من استوديو Android (يُنصح باستخدام الإصدار 3.0 من استوديو Android أو الإصدارات الأحدث). يتضمن الإصدار 3.0 من "استوديو Android" والإصدارات الأحدث أدوات لمساعدتك في استخدام ميزات Android 8.0، مثل الرموز التكيُّفية والخطوط القابلة للتنزيل. إذا لم تكن بحاجة إلى هذه الميزات بعد، يمكنك استخدام الإصدار الثابت من "استوديو Android" 2.3.3 لإنشاء تطبيقك الذي يعمل بالإصدار 8.0 من نظام التشغيل Android واستخدام واجهات برمجة التطبيقات الجديدة.

لإعداد أيّ من إصداري "استوديو Android"، اتّبِع الخطوات التالية:

  1. شغِّل "استوديو Android" وافتح تطبيق "مدير SDK" بالنقر على الأدوات > مدير SDK.
  2. في علامة التبويب منصات SDK، ضع علامة في المربّع إظهار تفاصيل الحزمة. تحقَّق مما يلي في معاينة Android 8.0:
    • الإصدار 26 من Android SDK Platform
    • صورة نظام Intel x86 Atom System في Google APIs (مطلوبة فقط للمحاكي)
  3. انتقِل إلى علامة التبويب أدوات SDK وضَع علامة في جميع العناصر التي تتوفّر لها تحديثات (انقر على كل مربّع اختيار يعرض شرطة ). ويجب أن يتضمّن ذلك أحدث الإصدارات من العناصر التالية المطلوبة:
    • الإصدار 26.0.0 من أدوات إصدار حزمة تطوير البرامج (SDK) لنظام التشغيل Android
    • الإصدار 26.0.0 من Android SDK Platform-أدوات
    • Android Emulator 26.0.0
  4. انقر على حسنًا لتثبيت جميع حِزم SDK التي تم اختيارها.

أصبحت الآن جاهزًا لبدء الإنشاء باستخدام Android 8.0.

تعديل إعدادات تصميمك

يمكنك تحديث compileSdkVersion وtargetSdkVersion وإصدار "مكتبة الدعم" إلى أحدث النُسخ المتاحة، مثل:

android {
  compileSdkVersion 26

  defaultConfig {
    targetSdkVersion 26
  }
  ...
}

dependencies {
  compile 'com.android.support:appcompat-v7:26.0.0'
}

// REQUIRED: Google's new Maven repo is required for the latest
// support library that is compatible with Android 8.0
repositories {
    google()

    // If you're using a version of Gradle lower than 4.1, you must instead use:
    // maven {
    //     url 'https://maven.google.com'
    // }
}

إزالة أجهزة استقبال البث من ملف البيان

بما أنّ Android 8.0 (مستوى واجهة برمجة التطبيقات 26) يفرض قيودًا جديدة على أجهزة استقبال البث، عليك إزالة أي أجهزة استقبال بث تم تسجيلها كأهداف ضمنية للبث. ولن يؤدي تركها في مكانها إلى إيقاف تطبيقك في وقت الإصدار أو وقت التشغيل، ولكن ليس لها أي تأثير عند تشغيل تطبيقك على نظام التشغيل Android 8.0.

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

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

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

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

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

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

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

تغيير ملخّص مرجع إضافي
الخصوصية لا يتيح Android 8.0 (مستوى واجهة برمجة التطبيقات 26) استخدام خصائص النظام net.dns1 أو net.dns2 أو net.dns3 أو net.dns4. التغييرات في السلوك: الخصوصية
الشرائح القابلة للكتابة والتنفيذ التي تم فرضها بالنسبة إلى المكتبات المجمّعة من رموز برمجية أصلية، يفرض Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات) قاعدة تقضي بأنّ البيانات يجب ألا تكون قابلة للتنفيذ، وأنّ الرموز البرمجية يجب ألا تكون قابلة للكتابة. التغيّرات في السلوك: المكتبات الأصلية
التحقق من صحة عنوان ELF والقسم يتحقق الرابط الديناميكي من المزيد من القيم في عنوان ELF وعناوين الأقسام، ويخفق إذا كانت هذه القيم غير صالحة. التغيّرات في السلوك: المكتبات الأصلية
الإشعارات على التطبيقات التي تستهدف الإصدار Android 8.0 (المستوى 26 لواجهة برمجة التطبيقات) من حزمة تطوير البرامج (SDK) تنفيذ قناة واحدة أو أكثر للإشعارات لنشر الإشعارات للمستخدمين. نظرة عامة على واجهة برمجة التطبيقات: الإشعارات
طريقة List.sort() قد لا تؤدي تنفيذ هذه الطريقة إلى طلب Collections.sort() بعد الآن، أو قد يعرض تطبيقك استثناءً بسبب تجاوز تسلسل استدعاء الدوال البرمجية. التغييرات في السلوك: معالجة المجموعات
طريقة Collections.sort() في عمليات تنفيذ القوائم، يعرض Collections.sort() الآن العنصر ConcurrentModificationException. تغييرات السلوك: معالجة المجموعات

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

لاستكشاف الميزات وواجهات برمجة التطبيقات الجديدة المتاحة في Android 8.0 (المستوى 26)، يُرجى الاطّلاع على ميزات Android 8.0 وواجهات برمجة التطبيقات.