ডিভাইস সামঞ্জস্য ওভারভিউ

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

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

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

"সামঞ্জস্যতা" মানে কি?

অ্যান্ড্রয়েড বিকাশের ক্ষেত্রে, দুটি ধরণের সামঞ্জস্য রয়েছে: ডিভাইস সামঞ্জস্য এবং অ্যাপ সামঞ্জস্য

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

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

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

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

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

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

ডিভাইস বৈশিষ্ট্য

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

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

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

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

আপনার অ্যাপ প্রতিটি ডিভাইসের সাথে সামঞ্জস্যপূর্ণ কিনা তা নির্ধারণ করতে Google Play স্টোর প্রতিটি ব্যবহারকারীর ডিভাইসে উপলব্ধ বৈশিষ্ট্যগুলির সাথে আপনার অ্যাপের প্রয়োজনীয় বৈশিষ্ট্যগুলির তুলনা করে৷ ডিভাইসটিতে আপনার অ্যাপের প্রয়োজনীয় সমস্ত বৈশিষ্ট্য না থাকলে, ব্যবহারকারী আপনার অ্যাপ ইনস্টল করতে পারবেন না।

যাইহোক, যদি আপনার অ্যাপের প্রাথমিক কার্যকারিতার জন্য কোনো ডিভাইস বৈশিষ্ট্যের প্রয়োজন না হয়, তাহলে required বৈশিষ্ট্যটিকে "false" -এ সেট করুন এবং রানটাইমে ডিভাইসের বৈশিষ্ট্য পরীক্ষা করুন। যদি বর্তমান ডিভাইসে অ্যাপের বৈশিষ্ট্যটি উপলব্ধ না হয়, তাহলে সংশ্লিষ্ট অ্যাপ বৈশিষ্ট্যটিকে ভালোভাবে হ্রাস করুন। উদাহরণস্বরূপ, আপনি hasSystemFeature() এ কল করে একটি বৈশিষ্ট্য উপলব্ধ কিনা তা জিজ্ঞাসা করতে পারেন:

কোটলিন

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 মানগুলি নির্দিষ্ট করতে হবে:

কোটলিন

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(33)
        ...
    }
}

গ্রোভি

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 33
        ...
    }
}

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

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

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

কোটলিন

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 নামে পরিচিত)। বিভিন্ন কনফিগারেশনকে সহজ করার জন্য, অ্যান্ড্রয়েড এই ভেরিয়েন্টগুলিকে গ্রুপে সাধারণীকরণ করে যা তাদের লক্ষ্য করা সহজ করে:

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

ডিফল্টরূপে, আপনার অ্যাপটি সমস্ত স্ক্রীনের আকার এবং ঘনত্বের সাথে সামঞ্জস্যপূর্ণ, কারণ সিস্টেমটি প্রতিটি স্ক্রিনের জন্য প্রয়োজনীয় আপনার UI লেআউট এবং চিত্র সংস্থানগুলির সাথে সামঞ্জস্য করে। সাধারণ পর্দার ঘনত্বের জন্য অপ্টিমাইজ করা বিটম্যাপ ছবি প্রদান করুন।

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

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

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

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

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

অতিরিক্ত সম্পদ:

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