نقل البيانات إلى 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 بعض السلوكيات التغييرات عند تحديث الإصدار 26 من "targetSdkVersion" لأنّ بعض التغييرات في السلوك قد تتطلب تغييرات في الرمز البرمجي لتجنُّب حدوث أعطال، عليك أولاً أن تفهم كيف يمكن أن يتعرّض تطبيقك ستتأثر عند تغيير targetSdkVersion من خلال مراجعة كل التغييرات في السلوك للتطبيقات التي تستهدف الإصدار 8.0 من Android.

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

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

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

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

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

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

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

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

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

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