বিভিন্ন প্ল্যাটফর্ম ভার্সনে কাজ করে

Android-এর লেটেস্ট ভার্সন প্রায়ই আপনার অ্যাপের জন্য দুর্দান্ত API প্রদান করে, তবে আরও বেশি ডিভাইস আপডেট না হওয়া পর্যন্ত আপনাকে Android-এর পুরনো ভার্সনে সহায়তা প্রদান করা চালিয়ে যেতে হবে। এই টিউটোরিয়াল থেকে আপনি জানতে পারবেন যে কীভাবে পুরনো ভার্সন সাপোর্ট করা চালিয়ে যাওয়ার পাশাপাশি লেটেস্ট API-এর সুবিধা নেওয়া যায়।

Android Studio নতুন প্রোজেক্ট উইজার্ড ব্যবহার করে Android-এর প্রতিটি ভার্সন রান করছে এমন অ্যাক্টিভ ডিভাইসের ডিস্ট্রিবিউশন খুঁজে নিন। Google Play Store-এ ভিজিট করা ডিভাইসের সংখ্যার উপর ভিত্তি করে এই ডিস্ট্রিবিউশন করা হয়। সাধারণত, আমরা সাজেস্ট করি যে আপনার অ্যাপের লেটেস্ট ভার্সন টার্গেট করার সময় প্রায় ৯০% অ্যাক্টিভ ডিভাইসে যেন তা কাজ করে।

পরামর্শ: Android-এর বিভিন্ন ভার্সন জুড়ে সেরা ফিচার ও ফাংশনালিটি প্রদান করার জন্য, আপনার অ্যাপে Android সাপোর্ট লাইব্রেরি ব্যবহার করা উচিত, যা আপনাকে পুরনো ভার্সনে সাম্প্রতিক প্ল্যাটফর্মের বিভিন্ন API ব্যবহার করার অনুমতি দেয়।

ন্যূনতম ও টার্গেট API লেভেল নির্দিষ্ট করা

AndroidManifest.xml ফাইল আপনার অ্যাপ সম্পর্কে বিবরণ দেয় এবং Android-এর কোন ভার্সনে এটি কাজ করে তা শনাক্ত করে। বিশেষ করে, <uses-sdk> এলিমেন্টের জন্য minSdkVersion এবং targetSdkVersion অ্যাট্রিবিউট আপনার অ্যাপের সাথে মানানসই সর্বনিম্ন API লেভেল এবং আপনি যে API লেভেলের জন্য অ্যাপ ডিজাইন ও পরীক্ষা করেছেন সেই সর্বোচ্চ API লেভেল শনাক্ত করে।

যেমন:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
    ...
</manifest>

Android-এর নতুন ভার্সন রিলিজ হওয়ার সাথে সাথে, কিছু স্টাইল ও আচরণ পরিবর্তিত হতে পারে। আপনার অ্যাপকে এইসব পরিবর্তনের সুবিধা নিতে দিতে এবং আপনার অ্যাপ যাতে প্রতিটি ব্যবহারকারীর ডিভাইসের স্টাইলের সাথে মানানসই হয় তা নিশ্চিত করতে, আপনাকে targetSdkVersion ভ্যালু সেট করতে হবে যাতে তা উপলভ্য লেটেস্ট Android ভার্সনের সাথে ম্যাচ করে।

যেহেতু SDK-এর মাইনর ভার্সন আচরণগত পরিবর্তনের সাথে যুক্ত নয়, তাই মাইনর SDK ভার্সন দেখানোর জন্য targetSdkVersion সেট করা সম্ভব নয়। আপনি যদি এমন কোনও মাইনর SDK ভার্সনে API কল করতে চান যা আপনার minSdkVersion-এর চেয়ে বেশি সাম্প্রতিক, তাহলে রানটাইমে সিস্টেম ভার্সন চেক করুন।

রানটাইমে সিস্টেম ভার্সন চেক করুন

Android প্রতিটি প্ল্যাটফর্ম ভার্সনের জন্য Build constants ক্লাসে একটি অনন্য কোড প্রদান করে। আপনার অ্যাপের মধ্যে এই কোডগুলি ব্যবহার করে এমন শর্ত তৈরি করুন যা নিশ্চিত করে যে উচ্চতর API লেভেলের উপর নির্ভর করে এমন কোড শুধুমাত্র তখনই কার্যকর করা হয় যখন সেই APIগুলি সিস্টেমে উপলভ্য থাকে।

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

জাভা

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
}

জাভা

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" সেট করেন, তাহলে Android 3.0 এবং তার পরবর্তী ভার্সনে আপনার অ্যাপে ডিফল্ট হিসেবে ActionBar অন্তর্ভুক্ত থাকে। তারপর অ্যাকশন বারে মেনু আইটেম যোগ করতে, আপনার মেনু রিসোর্স XML-এ android:showAsAction="ifRoom" সেট করতে হবে। ক্রস-ভার্সন 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">

আপনার সম্পূর্ণ অ্যাপে (সব অ্যাক্টিভিটি) থিম প্রয়োগ করতে, <application> এলিমেন্টে android:theme অ্যাট্রিবিউট যোগ করুন:

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

থিম তৈরি ও ব্যবহার করা সম্পর্কে আরও জানতে, স্টাইল ও থিম সংক্রান্ত গাইড পড়ুন।