يقدّم الإصدار 8.0 من Android (المستوى 26 من واجهة برمجة التطبيقات) تغييرات في السلوك بالإضافة إلى ميزات لواجهات برمجة التطبيقات (API) يمكنك الاستفادة منها في تطبيقاتك. يقدّم لك هذا المستند نظرة عامة على خطوات نقل تطبيقاتك إلى Android 8.0 على مرحلتَين رئيسيتَين:
- ضمان التوافق مع Android 8.0
تأكَّد من أنّ تطبيقك يعمل بشكل كامل على الإصدار الجديد من المنصة. في هذه المرحلة، لا تستخدم واجهات برمجة تطبيقات جديدة أو تغيّر
targetSdkVersion
لتطبيقك، ولكن قد يكون من الضروري إجراء تغييرات طفيفة. - تحديث الإصدار المستهدَف واستخدام ميزات Android 8.0
عندما تكون مستعدًا للاستفادة من الميزات الجديدة التي توفّرها المنصة، عليك تحديث
targetSdkVersion
إلى 26 والتأكّد من أنّ التطبيق لا يزال يعمل على النحو المتوقّع، ثم البدء في استخدام واجهات برمجة التطبيقات الجديدة.
التأكّد من التوافق مع Android 8.0
والهدف من ذلك هو التأكّد من أنّ تطبيقك الحالي يعمل على النحو المعتاد على الإصدار 8.0 من نظام التشغيل Android
(المستوى 26 لواجهة برمجة التطبيقات). قد تؤثر بعض التغييرات في النظام الأساسي في طريقة سلوك تطبيقك، لذلك قد يكون من الضروري إجراء بعض التعديلات، ولكن ليس عليك استخدام واجهات برمجة تطبيقات جديدة أو
تغيير targetSdkVersion
.
تجهيز جهاز يعمل بالإصدار 8.0 من نظام التشغيل Android
- إذا كان لديك جهاز متوافق (Pixel أو Pixel XL أو Pixel C أو Nexus 5X أو Nexus 6P أو Nexus Player)، اتّبِع التعليمات لتثبيت البرامج على جهازك.
- أو يمكنك تنزيل نسخة نظام التشغيل Android 8.0 الخاصة بمحاكي Android. وهي مُدرَجة في
مدير حِزم تطوير البرامج (SDK) ضمن
Android 8.0 باسم صورة نظام Google APIs Intel x86 Atom.
ملاحظة: إنّ صورة نظام التشغيل Android 8.0 متاحة للتنزيل من الإصدار 3.0 من "استوديو Android" والإصدارات الأحدث. لمزيد من المعلومات، يُرجى الاطّلاع على القسم أدناه من أجل الحصول على حزمة تطوير البرامج (SDK) لنظام التشغيل Android 8.0.
إجراء اختبار التوافق
في معظم الأحيان، يتطلّب اختبار التوافق مع Android 8.0 (المستوى 26 لواجهة برمجة التطبيقات) النوع نفسه من الاختبارات التي تجريها عند التحضير لإصدار تطبيقك. وهذا الوقت مناسب لمراجعة إرشادات جودة التطبيقات الأساسية وأفضل الممارسات للاختبار.
ومع ذلك، هناك جانب آخر من الاختبار: يُجري نظام التشغيل Android 8.0 تغييرات على منصّة Android
التي يمكن أن تؤثّر في سلوك تطبيقك أو تؤدي إلى إيقافه تمامًا، حتى إذا لم تغيّر
targetSdkVersion
. لهذا السبب، من المهم مراجعة التغييرات الرئيسية
في الجدول 1، واختبار أي إصلاحات تقوم بتنفيذها لاستيعاب التغييرات.
تغيير | ملخّص | مرجع إضافي |
---|---|---|
إشعارات رصد الموقع الجغرافي في الخلفية بمعدل أقل | إذا كان تطبيقك يتلقّى تحديثات الموقع الجغرافي من خدمة تُشغَّل في الخلفية، سيقل معدّل التحديثات على 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 من واجهة برمجة التطبيقات)، يمكنك أيضًا الاطّلاع على التغييرات في السلوك في Android 8.0.
تحديث الإصدار المستهدَف واستخدام ميزات Android 8.0
يوضّح هذا القسم كيفية تفعيل التوافق الكامل مع Android 8.0
(مستوى واجهة برمجة التطبيقات 26) من خلال تحديث targetSdkVersion
إلى 26
وإضافة ميزات جديدة متوفّرة في Android 8.0.
بالإضافة إلى تقديم واجهات برمجة تطبيقات جديدة، يقدّم Android 8.0 بعض التغيُّرات في السلوك عند تعديل targetSdkVersion
إلى 26. بما أنّ بعض التغييرات في السلوك
قد تتطلّب تغييرات في الرموز البرمجية لتجنُّب حدوث أعطال، عليك أولاً معرفة كيفية تأثير
تطبيقك عند تغيير targetSdkVersion
من خلال مراجعة جميع التغييرات في السلوك للتطبيقات التي تستهدف الإصدار 8.0 من نظام التشغيل Android.
ملاحظة: إنّ الخطوات الموضّحة أعلاه لضمان التوافق مع النظام الأساسي هي شرط أساسي لاستهداف تطبيقك بالإصدار 8.0 من نظام التشغيل Android، لذا احرص على إكمال هذه الخطوات أولاً.
الحصول على حزمة تطوير البرامج (SDK) لنظام التشغيل Android 8.0
يمكنك الحصول على حِزم SDK لإنشاء تطبيقك باستخدام الإصدار 8.0 من Android (المستوى 26 لواجهة برمجة التطبيقات) باستخدام أحدث إصدار من Android Studio (ننصح باستخدام الإصدار 3.0 من Android Studio أو الإصدارات الأحدث). يتضمّن الإصدار 3.0 من "استوديو Android" والإصدارات الأحدث أدوات لمساعدتك في استخدام ميزات Android 8.0، مثل الرموز المتكيّفة و الخطوط القابلة للتنزيل. إذا لم تكن بحاجة إلى هذه الميزات بعد، يمكنك استخدام الإصدار الثابت من Android Studio 2.3.3 لإنشاء تطبيقك باستخدام Android 8.0 واستخدام واجهات برمجة التطبيقات الجديدة.
لإعداد أي إصدار من Android Studio، اتّبِع الخطوات التالية:
- افتح "استوديو Android" وافتَح "مدير حِزم تطوير البرامج (SDK)" بالنقر على الأدوات > مدير حِزم تطوير البرامج (SDK).
- في علامة التبويب منصّات حزمة تطوير البرامج (SDK)، ضَع علامة في المربّع بجانب عرض تفاصيل الحزمة. في ما يلي
معاينة Android 8.0، يُرجى التحقّق مما يلي:
- نظام Android SDK 26
- صورة نظام Google APIs Intel x86 Atom (مطلوب فقط للمحاكي)
- انتقِل إلى علامة التبويب أدوات حزمة تطوير البرامج (SDK) وتحقّق من كل العناصر التي تتوفّر لها تحديثات (انقر على مربع الاختيار الذي يعرض شرطة ). من المفترض أن يتضمّن ذلك أحدث إصدارات العناصر التالية
المطلوبة:
- الإصدار 26.0.0 من أدوات إنشاء حزمة تطوير البرامج (SDK) لنظام التشغيل Android
- مجموعة أدوات نظام التشغيل لـ Android SDK 26.0.0
- إصدار 26.0.0 من Android Emulator
- انقر على حسنًا لتثبيت جميع حِزم 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' // } }
إزالة تطبيقات البث من ملف البيان
بما أنّ الإصدار 8.0 من Android (المستوى 26 لواجهة برمجة التطبيقات) يفرض قيودًا جديدة على تطبيقات تلقّي البث، عليك إزالة أي تطبيقات تلقّي بث تم تسجيلها لطلبات بث ضمنية. وتجدر الإشارة إلى أنّ ترك هذه الإعدادات في مكانها لن يؤدي إلى إيقاف تطبيقك في وقت الإنشاء أو وقت التشغيل، ولكن ليس لها أي تأثير في حال تشغيل التطبيق على نظام التشغيل Android 8.0.
إنّ عمليات البث التي يمكن لتطبيقك فقط الردّ عليها، مثل البث الصريح و عمليات البث المُرسَلة إلى اسم حزمة تطبيقك على وجه التحديد، ستظل تعمل بالطريقة نفسها على الإصدار 8.0 من نظام التشغيل Android.
هناك استثناءات لهذا القيد الجديد. للحصول على قائمة بالبث التلقائي الذي لا يزال يعمل في التطبيقات التي تستهدف الإصدار 8.0 من Android، يُرجى الاطّلاع على استثناءات البث التلقائي.
اختبار تطبيقك المتوافق مع Android 8.0
بعد إكمال الاستعدادات أعلاه، يمكنك إنشاء تطبيقك ثم اختباره بشكل إضافي للتأكّد من أنّه يعمل بشكل صحيح عند استهداف الإصدار 8.0 من نظام التشغيل Android (المستوى 26 من واجهة برمجة التطبيقات). حان الوقت لمراجعة إرشادات جودة التطبيقات الأساسية وأفضل الممارسات المتعلقة بالاختبار.
عند إنشاء تطبيقك مع ضبط targetSdkVersion
على 26،
هناك تغييرات معيّنة على المنصة يجب أن تكون على دراية بها. يمكن أن تؤثّر بعض
هذه التغييرات بشكل كبير في سلوك تطبيقك أو قد تؤدي
إلى إيقافه تمامًا، حتى إذا لم يتم استخدام ميزات
جديدة في الإصدار 8.0 من Android.
يقدّم الجدول 2 قائمة بهذه التغييرات مع روابط لمزيد من المعلومات.
تغيير | ملخّص | مزيد من المراجع |
---|---|---|
الخصوصية | لا يتيح نظام التشغيل Android 8.0 (المستوى 26 لواجهة برمجة التطبيقات) استخدام خصائص النظام net.dns1 أو net.dns2 أو net.dns3 أو net.dns4. | تغييرات السلوك: الخصوصية |
فرض الشرائح القابلة للكتابة والتنفيذ | بالنسبة إلى المكتبات المجمّعة من رموز برمجية أصلية، يفرض نظام التشغيل Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات) القاعدة التالية: يجب ألا تكون البيانات قابلة للتنفيذ، ويجب ألا تكون الرموز البرمجية قابلة للكتابة. | التغييرات في السلوك: المكتبات الأصلية |
التحقّق من صحة عنوان ELF والقسم | يتحقق الرابط الديناميكي من المزيد من القيم في عنوان ELF وعناوين الأقسام، ويخفق إذا كانت غير صالحة. | التغييرات في السلوك: المكتبات الأصلية |
الإشعارات | على التطبيقات التي تستهدف الإصدار 8.0 من حزمة تطوير البرامج (SDK) لنظام التشغيل Android (المستوى 26 لواجهة برمجة التطبيقات) استخدام قناة إشعارات واحدة أو أكثر لنشر الإشعارات للمستخدمين. | نظرة عامة على واجهة برمجة التطبيقات: الإشعارات |
طريقة List.sort()
|
قد لا تعود عمليات تنفيذ هذه الطريقة تستدعي Collections.sort() ، أو سيُلقي تطبيقك استثناءً بسبب حصول ذاكرة التخزين المؤقت على عدد كبير جدًا من الطلبات.
|
التغييرات في السلوك: التعامل مع المجموعة |
طريقة Collections.sort()
|
في عمليات تنفيذ القوائم، يُعرِض Collections.sort() الآن خطأ
ConcurrentModificationException .
|
السلوك التغييرات: معالجة المجموعة |
للحصول على قائمة أكثر شمولاً بالتغييرات في السلوك في Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات)، اطّلِع على التغييرات في السلوك في Android 8.0.
لاستكشاف الميزات الجديدة وواجهات برمجة التطبيقات المتاحة مع Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات)، اطّلِع على ميزات Android 8.0 وواجهات برمجة التطبيقات.