على الرغم من أنّ أحدث إصدارات Android توفّر غالبًا واجهات برمجة تطبيقات رائعة لتطبيقك، عليك مواصلة توفير الدعم لإصدارات Android القديمة إلى أن يتم تحديث المزيد من الأجهزة. توضّح لك هذه الدرس كيفية الاستفادة من أحدث واجهات برمجة التطبيقات مع مواصلة توفير الدعم للإصدارات القديمة أيضًا.
استخدِم معالج مشروع جديد في "استوديو Android" للعثور على توزيع الأجهزة النشطة التي تعمل بكل إصدار من إصدارات Android. ويستند هذا التوزيع إلى عدد الأجهزة التي تزور "متجر Google Play". بشكل عام، ننصحك بتوفير الدعم لحوالي% 90 من الأجهزة النشطة، مع استهداف تطبيقك لأحدث إصدار.
ملاحظة: لتوفير أفضل الميزات والوظائف على مستوى عدة إصدارات من Android، عليك استخدام مكتبة Android المتوافقة في تطبيقك، ما يتيح لك استخدام العديد من أحدث واجهات برمجة التطبيقات على الإصدارات القديمة.
تحديد الحد الأدنى لمستوى واجهة برمجة التطبيقات والمستوى المستهدف
يصف ملف AndroidManifest.xml تفاصيل حول تطبيقك ويحدّد إصدارات Android التي يتوافق معها. على وجه التحديد، تحدّد السمتان minSdkVersion
وtargetSdkVersion
للعنصر <uses-sdk>
أدنى مستوى لواجهة برمجة التطبيقات يتوافق معه تطبيقك وأعلى مستوى لواجهة برمجة التطبيقات الذي صمّمت تطبيقك واختبرته عليه.
مثلاً:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... > <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" /> ... </manifest>
مع إصدار نسخ جديدة من Android، قد تتغيّر بعض الأنماط والسلوكيات.
للسماح لتطبيقك بالاستفادة من هذه التغييرات وضمان أن يتناسب تطبيقك مع نمط كل جهاز من أجهزة المستخدمين، عليك ضبط قيمة
targetSdkVersion
لتتوافق مع أحدث إصدار من Android
متاح.
بما أنّ الإصدارات الثانوية من حزمة تطوير البرامج (SDK) غير مرتبطة بتغييرات في السلوك، لا يمكن ضبط targetSdkVersion
ليعكس إصدارًا ثانويًا من حزمة تطوير البرامج (SDK). إذا أردت استدعاء واجهة برمجة تطبيقات في إصدار ثانوي من حزمة SDK أحدث من minSdkVersion
، تحقَّق من إصدار النظام في وقت التشغيل.
التحقّق من إصدار النظام في وقت التشغيل
يوفر نظام التشغيل Android رمزًا فريدًا لكل إصدار من النظام الأساسي في فئة الثوابت Build
. استخدِم هذه الرموز البرمجية داخل تطبيقك لإنشاء شروط تضمن عدم تنفيذ الرمز البرمجي الذي يعتمد على مستويات أعلى من واجهة برمجة التطبيقات إلا عندما تكون واجهات برمجة التطبيقات هذه متاحة على النظام.
Kotlin
private fun setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { actionBar.setDisplayHomeAsUpEnabled(true) } }
Java
private void setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } }
يمكنك استخدام Build.VERSION.SDK_INT_FULL للتحقّق من توفّر إصدار رئيسي أو ثانوي من حزمة تطوير البرامج (SDK).
Kotlin
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) { // Use APIs introduced in a major or minor SDK release }
Java
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) { // Use APIs introduced in a major or minor SDK release }
ملاحظة: عند تحليل موارد XML، يتجاهل نظام التشغيل Android سمات XML غير المتوافقة مع الجهاز الحالي. وبالتالي، يمكنك استخدام سمات XML التي تتوافق فقط مع الإصدارات الأحدث بأمان بدون القلق بشأن تعذُّر عمل الإصدارات القديمة عند مواجهة هذا الرمز. على سبيل المثال، إذا ضبطت targetSdkVersion="11"
، سيتضمّن تطبيقك ActionBar
تلقائيًا على الإصدار 3.0 من نظام التشغيل Android والإصدارات الأحدث. لإضافة عناصر القائمة إلى شريط الإجراءات، عليك ضبط
android:showAsAction="ifRoom"
في ملف XML الخاص بمورد القائمة. يمكنك إجراء ذلك بأمان في ملف XML متوافق مع إصدارات متعددة، لأنّ إصدارات Android القديمة تتجاهل السمة showAsAction
(أي أنّك لا تحتاج إلى إصدار منفصل في res/menu-v11/
).
استخدام أنماط ومظاهر المنصة
يوفّر Android مظاهر لتجربة المستخدم تمنح التطبيقات الشكل والأسلوب الخاصين بنظام التشغيل الأساسي. يمكن تطبيق هذه السمات على تطبيقك ضمن ملف البيان. باستخدام هذه الأنماط والمظاهر المضمّنة، سيتبع تطبيقك تلقائيًا أحدث مظهر لنظام Android مع كل إصدار جديد.
لجعل نشاطك يبدو كمربّع حوار، اتّبِع الخطوات التالية:
<activity android:theme="@android:style/Theme.Dialog">
لجعل خلفية نشاطك شفافة، اتّبِع الخطوات التالية:
<activity android:theme="@android:style/Theme.Translucent">
لتطبيق مظهر مخصّص تم تحديده في /res/values/styles.xml
، اتّبِع الخطوات التالية:
<activity android:theme="@style/CustomTheme">
لتطبيق تصميم على تطبيقك بأكمله (جميع الأنشطة)، أضِف السمة android:theme
attribute
إلى العنصر <application>
:
<application android:theme="@style/CustomTheme">
لمزيد من المعلومات حول إنشاء المظاهر واستخدامها، يُرجى قراءة دليل الأنماط والمظاهر.