پشتیبانی از نسخه‌های مختلف پلاتفرم

درحالی‌که جدیدترین نسخه‌های Android اغلب میاناهای برنامه‌سازی کاربردی عالی برای برنامه‌تان ارائه می‌دهند، باید تا زمانی که دستگاه‌های بیشتری به‌روزرسانی شوند، به پشتیبانی از نسخه‌های قدیمی‌تر Android ادامه دهید. این درس به شما نشان می‌دهد که چگونه از جدیدترین میاناهای برنامه‌سازی کاربردی بهره ببرید و درعین‌حال همچنان از نسخه‌های قدیمی‌تر نیز پشتیبانی کنید.

از جادوی پروژه جدید «استودیو Android» برای پیدا کردن توزیع دستگاه‌های فعال اجراکننده هر نسخه Android استفاده کنید. این توزیع براساس تعداد دستگاه‌هایی است که از «فروشگاه Google Play» بازدید می‌کنند. به‌طور کلی، توصیه می‌کنیم حدود ۹۰٪ دستگاه‌های فعال را پشتیبانی کنید، درحالی‌که برنامه‌تان را برای جدیدترین نسخه هدف‌یابی می‌کنید.

نکته: برای ارائه بهترین ویژگی‌ها و عملکرد در چندین نسخه 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 موجود مطابقت داشته باشد.

ازآنجایی‌که نسخه‌های جزئی کیت توسعه نرم‌افزار به تغییرات رفتاری مرتبط نیستند، نمی‌توان targetSdkVersion را برای نشان دادن نسخه جزئی کیت توسعه نرم‌افزار تنظیم کرد. اگر می‌خواهید میانای برنامه‌سازی کاربردی را در نسخه جزئی کیت توسعه نرم‌افزار که جدیدتر از minSdkVersion شما است فراخوانی کنید، نسخه سیستم را در زمان اجرا بررسی کنید.

بررسی نسخه سیستم در زمان اجرا

Android برای هر نسخه پلاتفرم در کلاس ثابت‌های Build کد یکتایی ارائه می‌دهد. از این کدها در برنامه‌تان استفاده کنید تا شرایطی ایجاد کنید که مطمئن شوید کدی که به سطوح بالاتر API وابسته است فقط زمانی اجرا می‌شود که آن APIها در سیستم دردسترس باشند.

کاتلین

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)
    }
}

جاوا

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 برای بررسی وجود نسخه اصلی یا فرعی کیت توسعه نرم‌افزار استفاده کنید.

کاتلین

if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) {
  // Use APIs introduced in a major or minor SDK release
}

جاوا

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 در 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 را به عنصر <application> اضافه کنید:

<application android:theme="@style/CustomTheme">

برای کسب اطلاعات بیشتر درباره ایجاد و استفاده از زمینه‌ها، راهنمای سبک‌ها و زمینه‌ها را بخوانید.