অ্যান্ড্রয়েড ফোন, ট্যাবলেট এবং টেলিভিশনের মতো বিভিন্ন ডিভাইসে চালানোর জন্য ডিজাইন করা হয়েছে। বিভিন্ন ধরণের ডিভাইস আপনার অ্যাপের জন্য একটি বিশাল সম্ভাব্য দর্শক সরবরাহ করে। আপনার অ্যাপটি সমস্ত ডিভাইসে সফল হওয়ার জন্য, এটিকে বৈশিষ্ট্যের পরিবর্তনশীলতা সহ্য করতে হবে এবং একটি নমনীয় ইউজার ইন্টারফেস প্রদান করতে হবে যা বিভিন্ন স্ক্রিন কনফিগারেশনের সাথে খাপ খাইয়ে নিতে পারে।
ডিভাইসের সামঞ্জস্যতা নিশ্চিত করতে, Android একটি গতিশীল অ্যাপ ফ্রেমওয়ার্ক প্রদান করে যেখানে আপনি স্ট্যাটিক ফাইলগুলিতে কনফিগারেশন-নির্দিষ্ট অ্যাপ রিসোর্স প্রদান করতে পারেন, যেমন বিভিন্ন স্ক্রিন আকারের জন্য বিভিন্ন XML লেআউট। এরপর Android বর্তমান ডিভাইস কনফিগারেশনের উপর ভিত্তি করে উপযুক্ত রিসোর্স লোড করে। আপনার অ্যাপ ডিজাইন এবং অতিরিক্ত অ্যাপ রিসোর্স সম্পর্কে পূর্বচিন্তা করে, আপনি একটি একক অ্যাপ্লিকেশন প্যাকেজ (APK) প্রকাশ করতে পারেন যা বিভিন্ন ডিভাইসে ব্যবহারকারীর অভিজ্ঞতাকে অপ্টিমাইজ করে।
তবে, প্রয়োজনে, আপনি আপনার অ্যাপের বৈশিষ্ট্যের প্রয়োজনীয়তা নির্দিষ্ট করতে পারেন এবং গুগল প্লে স্টোর থেকে কোন ধরণের ডিভাইস আপনার অ্যাপ ইনস্টল করতে পারে তা নিয়ন্ত্রণ করতে পারেন। এই ডকুমেন্টটি ব্যাখ্যা করে যে আপনি কীভাবে কোন ডিভাইসগুলি আপনার অ্যাপগুলিতে অ্যাক্সেস পাবে তা নিয়ন্ত্রণ করতে পারেন এবং কীভাবে আপনার অ্যাপগুলিকে সঠিক দর্শকদের কাছে পৌঁছানোর জন্য প্রস্তুত করবেন।
"সামঞ্জস্যতা" বলতে কী বোঝায়?
অ্যান্ড্রয়েড ডেভেলপমেন্টের ক্ষেত্রে, দুটি ধরণের সামঞ্জস্য রয়েছে: ডিভাইস সামঞ্জস্য এবং অ্যাপ সামঞ্জস্য ।
যেহেতু অ্যান্ড্রয়েড একটি ওপেন-সোর্স প্রকল্প, তাই যেকোনো হার্ডওয়্যার প্রস্তুতকারক এমন একটি ডিভাইস তৈরি করতে পারে যা অ্যান্ড্রয়েড অপারেটিং সিস্টেম চালায়। কিন্তু একটি ডিভাইস "অ্যান্ড্রয়েড সামঞ্জস্যপূর্ণ" তখনই হয় যখন এটি অ্যান্ড্রয়েড এক্সিকিউশন পরিবেশের জন্য লেখা অ্যাপগুলি সঠিকভাবে চালাতে পারে। অ্যান্ড্রয়েড এক্সিকিউশন পরিবেশের সঠিক বিবরণ অ্যান্ড্রয়েড সামঞ্জস্য প্রোগ্রাম দ্বারা সংজ্ঞায়িত করা হয়। প্রতিটি ডিভাইসকে সামঞ্জস্যপূর্ণ বলে বিবেচিত হতে হলে সামঞ্জস্যতা পরীক্ষা স্যুট (CTS) পাস করতে হবে।
একজন অ্যাপ ডেভেলপার হিসেবে, আপনার কোনও ডিভাইস অ্যান্ড্রয়েড সামঞ্জস্যপূর্ণ কিনা তা নিয়ে চিন্তা করার দরকার নেই, কারণ শুধুমাত্র অ্যান্ড্রয়েড সামঞ্জস্যপূর্ণ ডিভাইসগুলির মধ্যে গুগল প্লে স্টোর অন্তর্ভুক্ত। সুতরাং, যদি কোনও ব্যবহারকারী গুগল প্লে স্টোর থেকে আপনার অ্যাপটি ইনস্টল করেন, তবে তারা একটি অ্যান্ড্রয়েড সামঞ্জস্যপূর্ণ ডিভাইস ব্যবহার করছেন।
তবে, আপনার অ্যাপটি প্রতিটি সম্ভাব্য ডিভাইস কনফিগারেশনের সাথে সামঞ্জস্যপূর্ণ কিনা তা বিবেচনা করতে হবে। যেহেতু অ্যান্ড্রয়েড বিভিন্ন ধরণের ডিভাইস কনফিগারেশনে চলে, তাই কিছু বৈশিষ্ট্য সমস্ত ডিভাইসে উপলব্ধ নয়। উদাহরণস্বরূপ, কিছু ডিভাইসে কম্পাস সেন্সর অন্তর্ভুক্ত নাও থাকতে পারে। যদি আপনার অ্যাপের মূল কার্যকারিতার জন্য একটি কম্পাস সেন্সর প্রয়োজন হয়, তাহলে আপনার অ্যাপটি কেবলমাত্র সেই বৈশিষ্ট্যযুক্ত ডিভাইসগুলির সাথে সামঞ্জস্যপূর্ণ।
ডিভাইসগুলিতে আপনার অ্যাপের প্রাপ্যতা নিয়ন্ত্রণ করুন
অ্যান্ড্রয়েড বিভিন্ন ধরণের বৈশিষ্ট্য সমর্থন করে যা আপনার অ্যাপ প্ল্যাটফর্ম 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() কল করে কোনও বৈশিষ্ট্য উপলব্ধ কিনা তা জিজ্ঞাসা করতে পারেন:
কোটলিন
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(); }
গুগল প্লে স্টোরের মাধ্যমে আপনার অ্যাপের প্রাপ্যতা নিয়ন্ত্রণ করতে আপনি যে সমস্ত ফিল্টার ব্যবহার করতে পারেন সে সম্পর্কে তথ্যের জন্য, গুগল প্লেতে ফিল্টার ডকুমেন্টেশন দেখুন।
প্ল্যাটফর্ম সংস্করণ
বিভিন্ন ডিভাইসে অ্যান্ড্রয়েড প্ল্যাটফর্মের বিভিন্ন সংস্করণ চালানো হতে পারে, যেমন অ্যান্ড্রয়েড ১২ বা অ্যান্ড্রয়েড ১৩। প্রতিটি ধারাবাহিক প্ল্যাটফর্ম সংস্করণ প্রায়শই পূর্ববর্তী সংস্করণে উপলব্ধ নয় এমন API যোগ করে। কোন API সেট উপলব্ধ তা নির্দেশ করার জন্য, প্রতিটি প্ল্যাটফর্ম সংস্করণ একটি API স্তর নির্দিষ্ট করে। উদাহরণস্বরূপ, অ্যান্ড্রয়েড ১২ হল API স্তর ৩১, এবং অ্যান্ড্রয়েড ১৩ হল API স্তর ৩৩।
আপনার 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 ফাইল সম্পর্কে আরও তথ্যের জন্য, Configure your build পড়ুন।
অ্যান্ড্রয়েডের প্রতিটি ধারাবাহিক সংস্করণ পূর্ববর্তী প্ল্যাটফর্ম সংস্করণের API ব্যবহার করে তৈরি অ্যাপগুলির জন্য সামঞ্জস্যতা প্রদান করে, তাই আপনার অ্যাপটি ডকুমেন্টেড অ্যান্ড্রয়েড API ব্যবহার করার সময় অ্যান্ড্রয়েডের ভবিষ্যতের সংস্করণগুলির সাথে সামঞ্জস্যপূর্ণ।
তবে, যদি আপনার অ্যাপটি সাম্প্রতিক প্ল্যাটফর্ম সংস্করণে যোগ করা 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(); }
স্ক্রিন কনফিগারেশন
অ্যান্ড্রয়েড ফোন, ট্যাবলেট এবং টিভির মতো বিভিন্ন আকারের ডিভাইসে চলে। স্ক্রিনের ধরণ অনুসারে ডিভাইসগুলিকে শ্রেণীবদ্ধ করার জন্য, অ্যান্ড্রয়েড প্রতিটি ডিভাইসের জন্য দুটি বৈশিষ্ট্য সংজ্ঞায়িত করে: স্ক্রিনের আকার (স্ক্রিনের ভৌত আকার) এবং স্ক্রিন ঘনত্ব (স্ক্রিনে পিক্সেলের ভৌত ঘনত্ব, যা DPI নামে পরিচিত)। বিভিন্ন কনফিগারেশনকে সহজ করার জন্য, অ্যান্ড্রয়েড এই রূপগুলিকে এমন গোষ্ঠীতে সাধারণীকরণ করে যা তাদের লক্ষ্য করা সহজ করে তোলে:
- চারটি সাধারণ আকার: ছোট, সাধারণ, বড় এবং xlarge
- বেশ কিছু সাধারণ ঘনত্ব: mdpi (মাঝারি), hdpi (উচ্চ), xhdpi (অতিরিক্ত উচ্চ), xxhdpi (অতিরিক্ত-অতিরিক্ত উচ্চ), এবং অন্যান্য
ডিফল্টরূপে, আপনার অ্যাপটি সমস্ত স্ক্রিনের আকার এবং ঘনত্বের সাথে সামঞ্জস্যপূর্ণ, কারণ সিস্টেমটি প্রতিটি স্ক্রিনের জন্য প্রয়োজনীয় হিসাবে আপনার UI লেআউট এবং চিত্র সংস্থানগুলিতে সমন্বয় করে। সাধারণ স্ক্রিন ঘনত্বের জন্য অপ্টিমাইজ করা বিটম্যাপ চিত্র সরবরাহ করুন।
যতটা সম্ভব নমনীয় লেআউট ব্যবহার করে ব্যবহারকারীর অভিজ্ঞতা অপ্টিমাইজ করুন। যেখানে পোর্ট্রেট এবং ল্যান্ডস্কেপের মতো বড় কনফিগারেশন পরিবর্তনের জন্য লেআউট আছে, অথবা বড় বনাম ছোট উইন্ডো আকার, সেখানে কনফিগারেশনের ছোট পরিবর্তনের জন্য নমনীয় বিকল্প লেআউট প্রদানের কথা বিবেচনা করুন। এটি ট্যাবলেট, ফোন এবং ফোল্ডেবলের মতো ফর্ম ফ্যাক্টরগুলিতে ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। মাল্টি-উইন্ডো মোডে উইন্ডোজের আকার পরিবর্তন করলেও এটি সাহায্য করে।
বিভিন্ন স্ক্রিনের জন্য বিকল্প রিসোর্স কীভাবে তৈরি করবেন এবং প্রয়োজনে আপনার অ্যাপকে নির্দিষ্ট স্ক্রিন আকারে সীমাবদ্ধ রাখার বিষয়ে তথ্যের জন্য, স্ক্রিন সামঞ্জস্যতার ওভারভিউ পড়ুন এবং বড় স্ক্রিন অ্যাপের মানের নির্দেশিকা দেখুন।
ব্যবসায়িক কারণে আপনার অ্যাপের প্রাপ্যতা নিয়ন্ত্রণ করুন
ডিভাইসের বৈশিষ্ট্যের উপর ভিত্তি করে আপনার অ্যাপের প্রাপ্যতা সীমাবদ্ধ করার পাশাপাশি, ব্যবসায়িক বা আইনি কারণে আপনার অ্যাপের প্রাপ্যতা সীমাবদ্ধ করার প্রয়োজন হতে পারে। এই ধরণের পরিস্থিতির জন্য, Google Play Store Play Console-এ ফিল্টারিং বিকল্প প্রদান করে যা আপনাকে ব্যবহারকারীর লোকেল বা ওয়্যারলেস ক্যারিয়ারের মতো অ-প্রযুক্তিগত কারণে আপনার অ্যাপের প্রাপ্যতা নিয়ন্ত্রণ করতে দেয়।
প্রযুক্তিগত সামঞ্জস্যের জন্য ফিল্টারিং—যেমন প্রয়োজনীয় হার্ডওয়্যার উপাদান—সবসময় আপনার APK বা AAB ফাইলের মধ্যে থাকা তথ্যের উপর ভিত্তি করে করা হয়। কিন্তু অ-প্রযুক্তিগত কারণে—যেমন ভৌগোলিক অবস্থান—সবসময় Google Play Console- এ ফিল্টারিং করা হয়।
অতিরিক্ত সম্পদ:
- অ্যাপ রিসোর্স ওভারভিউ
- অ্যাপ কোড থেকে অ্যাপ রিসোর্স আলাদা করার জন্য অ্যান্ড্রয়েড অ্যাপগুলি কীভাবে গঠন করা হয়েছে সে সম্পর্কে তথ্য, নির্দিষ্ট ডিভাইস কনফিগারেশনের জন্য আপনি কীভাবে বিকল্প রিসোর্স সরবরাহ করতে পারেন তা সহ।
- গুগল প্লেতে ফিল্টার
- গুগল প্লে স্টোর বিভিন্ন ডিভাইসে আপনার অ্যাপ ইনস্টল করা থেকে কীভাবে আটকাতে পারে সে সম্পর্কে তথ্য।
- অ্যান্ড্রয়েডে অনুমতি
- অ্যান্ড্রয়েড কীভাবে নির্দিষ্ট API গুলিতে অ্যাপ অ্যাক্সেস সীমাবদ্ধ করে, একটি অনুমতি সিস্টেমের মাধ্যমে যার জন্য আপনার অ্যাপটিকে সেই API গুলি ব্যবহার করার জন্য ব্যবহারকারীর সম্মতি প্রয়োজন।