মানানসই ডিভাইস সংক্রান্ত ওভারভিউ

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

ডিভাইসের সাথে মানানসই হওয়ার ব্যাপারে সাহায্য করতে, Android একটি ডায়নামিক অ্যাপ ফ্রেমওয়ার্ক প্রদান করে যেখানে আপনি স্ট্যাটিক ফাইলে কনফিগারেশন-নির্দিষ্ট অ্যাপ রিসোর্স প্রদান করতে পারবেন, যেমন বিভিন্ন স্ক্রিন সাইজের জন্য বিভিন্ন XML লেআউট। তারপর Android বর্তমান ডিভাইস কনফিগারেশনের উপর ভিত্তি করে উপযুক্ত রিসোর্স লোড করে। আপনার অ্যাপ ডিজাইন ও অতিরিক্ত অ্যাপ রিসোর্সের ব্যাপারে আগে থেকে ভেবে রাখলে, আপনি এমন একটি অ্যাপ্লিকেশন প্যাকেজ (APK) প্রকাশ করতে পারবেন যা বিভিন্ন ডিভাইসে ব্যবহারকারীর অভিজ্ঞতা অপ্টিমাইজ করে।

তবে, প্রয়োজন হলে, আপনি অ্যাপের ফিচার সংক্রান্ত প্রয়োজনীয়তা নির্দিষ্ট করতে এবং Google Play Store থেকে কোন ধরনের ডিভাইসে আপনার অ্যাপ ইনস্টল করা যাবে তা নিয়ন্ত্রণ করতে পারবেন। কোন কোন ডিভাইসের আপনার অ্যাপে অ্যাক্সেস আছে তা আপনি কীভাবে নিয়ন্ত্রণ করতে পারবেন এবং সঠিক দর্শকের কাছে পৌঁছানোর জন্য আপনার অ্যাপ কীভাবে প্রস্তুত করবেন তা এই ডকুমেন্টে ব্যাখ্যা করা হয়েছে।

"মানানসই" বলতে কী বোঝায়?

Android ডেভেলপমেন্টের ক্ষেত্রে, দুই ধরনের কম্প্যাটিবিলিটি আছে: ডিভাইস কম্প্যাটিবিলিটি এবং অ্যাপ কম্প্যাটিবিলিটি।

Android একটি ওপেন-সোর্স প্রোজেক্ট হওয়ার কারণে, যেকোনও হার্ডওয়্যার প্রস্তুতকারক Android অপারেটিং সিস্টেমে চলে এমন ডিভাইস তৈরি করতে পারে। তবে, কোনও ডিভাইসকে "Android-এর সাথে মানানসই" তখনই বলা হয় যখন সেটি Android এক্সিকিউশন এনভায়রনমেন্ট-এর জন্য তৈরি করা অ্যাপ সঠিকভাবে চালাতে পারে। Android এক্সিকিউশন এনভায়রনমেন্টের সঠিক বিবরণ Android উপযুক্ততার প্রোগ্রাম দ্বারা নির্ধারিত হয়। মানানসই হিসেবে বিবেচিত হতে প্রতিটি ডিভাইসকে কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) পাস করতে হবে।

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

তবে, আপনার অ্যাপ প্রতিটি সম্ভাব্য ডিভাইস কনফিগারেশনের সাথে মানানসই কিনা তা আপনাকে বিবেচনা করতে হবে। Android বিভিন্ন ধরনের ডিভাইস কনফিগারেশনে চলে বলে, কিছু ফিচার সব ডিভাইসে উপলভ্য নয়। যেমন, কিছু ডিভাইসে কম্পাস সেন্সর নাও থাকতে পারে। আপনার অ্যাপের মূল কার্যকারিতার জন্য কম্পাস সেন্সর প্রয়োজন হলে, আপনার অ্যাপ শুধুমাত্র সেইসব ডিভাইসের সাথে মানানসই হবে যেগুলিতে এই ফিচার আছে।

ডিভাইসে আপনার অ্যাপের উপলভ্যতা নিয়ন্ত্রণ করুন

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

আপনার অ্যাপের জন্য সম্ভাব্য সবচেয়ে বড় ইউজার বেস পেতে, একটি APK বা AAB ব্যবহার করে যত বেশি সম্ভব ডিভাইস কনফিগারেশন সাপোর্ট করুন। বেশিরভাগ ক্ষেত্রে, রানটাইমে ঐচ্ছিক ফিচার বন্ধ করে এবং বিভিন্ন কনফিগারেশনের জন্য বিকল্প সহ অ্যাপ রিসোর্স প্রদান করে আপনি এটি করতে পারেন, যেমন বিভিন্ন স্ক্রিন সাইজের জন্য বিভিন্ন লেআউট। প্রয়োজন হলে, নিম্নলিখিত ডিভাইসের বৈশিষ্ট্যের উপর ভিত্তি করে Google Play Store-এর মাধ্যমে নির্দিষ্ট ডিভাইসে আপনার অ্যাপের উপলভ্যতা সীমাবদ্ধ করতে পারবেন:

ডিভাইসের ফিচার

ডিভাইসের ফিচারের উপর ভিত্তি করে আপনার অ্যাপের উপলভ্যতা ম্যানেজ করতে, Android যেকোনও হার্ডওয়্যার বা সফ্টওয়্যার ফিচারের জন্য ফিচার আইডি নির্ধারণ করে যা সব ডিভাইসে উপলভ্য নাও হতে পারে। যেমন, কম্পাস সেন্সরের ফিচার আইডি হল FEATURE_SENSOR_COMPASS, এবং অ্যাপ উইজেটের ফিচার আইডি হল FEATURE_APP_WIDGETS।

প্রয়োজন হলে, ব্যবহারকারীর ডিভাইসে কোনও প্রয়োজনীয় ফিচার না থাকলে, আপনি তাকে অ্যাপ ইনস্টল করা থেকে আটকাতে পারেন। এর জন্য আপনার অ্যাপের ম্যানিফেস্ট ফাইলে <uses-feature> এলিমেন্ট ব্যবহার করে ফিচারটি ঘোষণা করতে হবে।

যেমন, আপনার অ্যাপ যদি কম্পাস সেন্সর নেই এমন ডিভাইসে কাজ না করে, তাহলে আপনি নিম্নলিখিত ম্যানিফেস্ট ট্যাগ ব্যবহার করে কম্পাস সেন্সরকে প্রয়োজনীয়তা হিসেবে ঘোষণা করতে পারেন:

<manifest ... >
    <uses-feature android:name="android.hardware.sensor.compass"
                  android:required="true" />
    ...
</manifest>

আপনার অ্যাপের জন্য প্রয়োজনীয় ফিচার এবং প্রতিটি ব্যবহারকারীর ডিভাইসে উপলভ্য ফিচার Google Play Store তুলনা করে দেখে, যাতে আপনার অ্যাপ প্রতিটি ডিভাইসের সাথে মানানসই কিনা তা নির্ধারণ করা যায়। আপনার অ্যাপের জন্য প্রয়োজনীয় সব ফিচার ডিভাইসে না থাকলে, ব্যবহারকারী আপনার অ্যাপ ইনস্টল করতে পারবেন না।

তবে, আপনার অ্যাপের প্রাথমিক কার্যকারিতার জন্য ডিভাইসের কোনও ফিচার প্রয়োজন না হলে, required অ্যাট্রিবিউট "false"-এ সেট করুন এবং রানটাইমে ডিভাইসের ফিচার চেক করুন। বর্তমান ডিভাইসে অ্যাপ ফিচার উপলভ্য না থাকলে, সংশ্লিষ্ট অ্যাপ ফিচারটি গ্রেড-ডাউন করুন। যেমন, আপনি কোয়েরি করে জানতে পারেন যে কোনও ফিচার উপলভ্য কিনা hasSystemFeature() এইভাবে কল করে:

Kotlin

if (!packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature()
}

জাভা

PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature();
}

Google Play Store-এর মাধ্যমে আপনার অ্যাপের উপলভ্যতা নিয়ন্ত্রণ করার জন্য আপনি যেসব ফিল্টার ব্যবহার করতে পারেন, সেই সম্পর্কে তথ্য পেতে, Google Play-তে ফিল্টার ডকুমেন্টেশন দেখুন।

প্ল্যাটফর্ম ভার্সন

বিভিন্ন ডিভাইসে Android প্ল্যাটফর্মের বিভিন্ন ভার্সন চলতে পারে, যেমন Android 12 বা Android 13। প্রতিটি পরবর্তী প্ল্যাটফর্ম ভার্সন প্রায়শই API যোগ করে যা আগের ভার্সনে উপলভ্য নয়। কোন API-এর সেট উপলভ্য আছে তা নির্দেশ করতে, প্রতিটি প্ল্যাটফর্ম ভার্সন একটি API লেভেল নির্দিষ্ট করে। যেমন, Android 12 হল API লেভেল 31 এবং Android 13 হল API লেভেল 33।

আপনার build.gradle ফাইলে minSdkVersion এবং targetSdkVersion ভ্যালু উল্লেখ করতে হবে:

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"

        // Defines the minimum API level required to run the app.
        minSdkVersion(30)

        // Specifies the API level used to test the app.
        targetSdkVersion(36)
        ...
    }
}

গ্ৰুভি

android {
    defaultConfig {
        applicationId 'com.example.myapp'

        // Defines the minimum API level required to run the app.
        minSdkVersion 30

        // Specifies the API level used to test the app.
        targetSdkVersion 36
        ...
    }
}

build.gradle ফাইল সম্পর্কে আরও জানতে, আপনার বিল্ড কনফিগার করুন নিবন্ধটি পড়ুন।

Android-এর প্রতিটি পরবর্তী ভার্সন, আগের প্ল্যাটফর্ম ভার্সনের API ব্যবহার করে তৈরি করা অ্যাপের জন্য কম্প্যাটিবিলিটি প্রদান করে, তাই ডকুমেন্ট করা Android API ব্যবহার করার সময় আপনার অ্যাপ Android-এর ভবিষ্যতের ভার্সনের সাথে কম্প্যাটিবল হয়।

তবে, আপনার অ্যাপ যদি আরও সাম্প্রতিক প্ল্যাটফর্ম ভার্সনে যোগ করা API ব্যবহার করে, কিন্তু সেগুলি তার প্রাথমিক কার্যকারিতার জন্য প্রয়োজন না হয়, তাহলে রানটাইমে API লেভেল চেক করুন এবং API লেভেল খুব কম হলে সংশ্লিষ্ট ফিচারগুলি সুন্দরভাবে ডাউনগ্রেড করুন। এই ক্ষেত্রে, আপনার অ্যাপের প্রাথমিক কার্যকারিতার জন্য minSdkVersion-কে সর্বনিম্ন সম্ভাব্য মান হিসেবে সেট করুন, তারপর বর্তমান সিস্টেমের ভার্সন, SDK_INT, Build.VERSION_CODES-এ কোডনেম কনস্ট্যান্টের সাথে তুলনা করুন যা আপনি চেক করতে চান এমন API লেভেলের সাথে সম্পর্কিত, যেমন নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

Kotlin

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop()
}

জাভা

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop();
}

স্ক্রিন কনফিগারেশন

Android বিভিন্ন সাইজের ডিভাইসে চলে, যেমন ফোন, ট্যাবলেট ও টিভি। স্ক্রিনের ধরন অনুযায়ী ডিভাইসকে শ্রেণীবদ্ধ করতে, Android প্রতিটি ডিভাইসের জন্য দুটি বৈশিষ্ট্য সংজ্ঞায়িত করে: স্ক্রিনের সাইজ (স্ক্রিনের ফিজিক্যাল সাইজ) এবং স্ক্রিনের ঘনত্ব (স্ক্রিনে পিক্সেলের ফিজিক্যাল ঘনত্ব, যা DPI নামে পরিচিত)। বিভিন্ন কনফিগারেশন সহজ করতে, Android এই ভেরিয়েন্টগুলিকে গ্রুপে ভাগ করে যাতে সেগুলিকে টার্গেট করা সহজ হয়:

  • চারটি সাধারণ সাইজ: ছোট, সাধারণ, বড় এবং খুব বড়
  • কয়েকটি সাধারণ ডেনসিটি: mdpi (মাঝারি), hdpi (বেশি), xhdpi (অতিরিক্ত বেশি), xxhdpi (অতিরিক্ত-অতিরিক্ত বেশি) এবং অন্যান্য

ডিফল্ট হিসেবে, আপনার অ্যাপ সব স্ক্রিন সাইজ ও ডেনসিটির সাথে মানানসই, কারণ সিস্টেম প্রতিটি স্ক্রিনের জন্য প্রয়োজন অনুযায়ী আপনার UI লেআউট ও ইমেজ রিসোর্স অ্যাডজাস্ট করে। সাধারণ স্ক্রিন ডেনসিটির জন্য অপ্টিমাইজ করা বিটম্যাপ ছবি প্রদান করুন।

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

বিভিন্ন স্ক্রিনের জন্য কীভাবে বিকল্প রিসোর্স তৈরি করতে হয় এবং প্রয়োজন হলে কীভাবে নির্দিষ্ট স্ক্রিন সাইজে আপনার অ্যাপ সীমাবদ্ধ করতে হয় সেই সম্পর্কে তথ্যের জন্য, স্ক্রিন কম্প্যাটিবিলিটি ওভারভিউ পড়ুন এবং বড় স্ক্রিন অ্যাপ কোয়ালিটি নির্দেশিকা দেখুন।

ব্যবসায়িক কারণে আপনার অ্যাপের উপলভ্যতা নিয়ন্ত্রণ করুন

ডিভাইসের বৈশিষ্ট্যের উপর ভিত্তি করে আপনার অ্যাপের উপলভ্যতা সীমাবদ্ধ করার পাশাপাশি, আপনাকে ব্যবসা বা আইনি কারণে আপনার অ্যাপের উপলভ্যতা সীমাবদ্ধ করতে হতে পারে। এই ধরনের পরিস্থিতির জন্য, Google Play Store, Play Console-এ ফিল্টারিংয়ের বিকল্প প্রদান করে যা আপনাকে ব্যবহারকারীর লোকেশন বা ওয়্যারলেস ক্যারিয়ারের মতো অ-প্রযুক্তিগত কারণে আপনার অ্যাপের উপলভ্যতা নিয়ন্ত্রণ করতে দেয়।

টেকনিক্যাল কম্প্যাটিবিলিটির জন্য ফিল্টার করা—যেমন প্রয়োজনীয় হার্ডওয়্যার কম্পোনেন্ট—সবসময় আপনার APK বা AAB ফাইলের মধ্যে থাকা তথ্যের উপর ভিত্তি করে করা হয়। তবে, প্রযুক্তিগত নয় এমন কারণে ফিল্টার করার বিষয়টি—যেমন ভৌগোলিক লোকেশন—সবসময় Google Play Console-এ ম্যানেজ করা হয়।

অতিরিক্ত রিসোর্স:

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