<uses-sdk>

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

সিনট্যাক্স:
<uses-sdk android:minSdkVersion="integer"
          android:targetSdkVersion="integer"
          android:maxSdkVersion="integer" />
এতে আছে:
<manifest>
বিবরণ:

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

নাম যাই হোক না কেন, এই এলিমেন্টটি API লেভেল নির্দিষ্ট করার জন্য ব্যবহার করা হয়, সফ্টওয়্যার ডেভেলপমেন্ট কিট (SDK) বা Android প্ল্যাটফর্মের ভার্সন নম্বর নয়। API লেভেল সবসময় একটি পূর্ণসংখ্যা হয়। আপনি এর সাথে সম্পর্কিত Android ভার্সন নম্বর থেকে API লেভেল বের করতে পারবেন না। যেমন, এটি মেজর ভার্সন বা মেজর ও মাইনর ভার্সনের যোগফলের মতো নয়।

কোনও অ্যাপ মাইনর SDK ভার্সন টার্গেট করে বা সেটির প্রয়োজন হয় কিনা তা নির্দিষ্ট করা সম্ভব নয়।

এছাড়াও, আপনার অ্যাপ্লিকেশনের ভার্সন তৈরি করা সম্পর্কিত ডকুমেন্ট পড়ুন।

অ্যাট্রিবিউট:
android:minSdkVersion
অ্যাপ্লিকেশন চালানোর জন্য প্রয়োজনীয় ন্যূনতম API লেভেল চিহ্নিত করার জন্য একটি পূর্ণসংখ্যা। সিস্টেমের API লেভেল এই অ্যাট্রিবিউটে উল্লেখ করা ভ্যালুর চেয়ে কম হলে, Android সিস্টেম ব্যবহারকারীকে অ্যাপ্লিকেশন ইনস্টল করতে দেয় না। এই অ্যাট্রিবিউট সবসময় ঘোষণা করুন।

সতর্কতা: আপনি এই অ্যাট্রিবিউট ঘোষণা না করলে, সিস্টেম ডিফল্ট ভ্যালু "1" ধরে নেয়, যার অর্থ হল আপনার অ্যাপ্লিকেশন Android-এর সব ভার্সনের সাথে মানানসই। যদি এটি না হয় এবং আপনি সঠিক minSdkVersion ঘোষণা না করেন, তাহলে একটি বেমানান API লেভেল সহ সিস্টেমে ইনস্টল করার সময়, অনুপলভ্য API অ্যাক্সেস করার চেষ্টা করার সময় রানটাইমে অ্যাপ্লিকেশনটি ক্র্যাশ করে। এই কারণে, minSdkVersion অ্যাট্রিবিউটে উপযুক্ত API লেভেল ঘোষণা করতে ভুলবেন না।

android:targetSdkVersion
অ্যাপ্লিকেশন যে API লেভেল টার্গেট করে তা বোঝাতে একটি পূর্ণসংখ্যা ব্যবহার করা হয়। সেট করা না থাকলে, ডিফল্ট ভ্যালু minSdkVersion-এ দেওয়া ভ্যালুর সমান হয়।

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

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

যেমন, এই ভ্যালু "১১" বা তার বেশি সেট করলে, Android ৩.০ বা তার বেশি ভার্সনে চলার সময় সিস্টেম আপনার অ্যাপে Holo ডিফল্ট থিম প্রয়োগ করতে পারে এবং বড় স্ক্রিনে চলার সময় স্ক্রিন কম্প্যাটিবিলিটি মোড বন্ধ করে দেয়, কারণ API লেভেল ১১-এর জন্য সাপোর্ট বড় স্ক্রিনের জন্য অপ্রকাশিত সাপোর্ট প্রদান করে।

এই অ্যাট্রিবিউটের জন্য আপনার সেট করা ভ্যালুর উপর ভিত্তি করে সিস্টেম অনেক কম্প্যাটিবিলিটি আচরণ চালু করতে পারে। এইসব আচরণের মধ্যে বেশ কয়েকটি Build.VERSION_CODES রেফারেন্সে সংশ্লিষ্ট প্ল্যাটফর্ম ভার্সন দ্বারা বর্ণনা করা হয়েছে।

প্রতিটি Android রিলিজের সাথে আপনার অ্যাপ্লিকেশন বজায় রাখতে, লেটেস্ট API লেভেলের সাথে ম্যাচ করতে এই অ্যাট্রিবিউটের ভ্যালু বাড়ান, তারপর সংশ্লিষ্ট প্ল্যাটফর্ম ভার্সনে আপনার অ্যাপ্লিকেশন ভালভাবে পরীক্ষা করুন।

এতে চালু করা হয়েছে: API লেভেল ৪

android:maxSdkVersion
একটি পূর্ণসংখ্যা যা সর্বাধিক API লেভেলকে নির্দেশ করে যার উপর অ্যাপ্লিকেশনটি রান করার জন্য ডিজাইন করা হয়েছে।

Android 1.5, 1.6, 2.0 ও 2.0.1 ভার্সনে, কোনও অ্যাপ্লিকেশন ইনস্টল করার সময় এবং সিস্টেম আপডেট করার পরে অ্যাপ্লিকেশন আবার যাচাই করার সময়, সিস্টেম এই অ্যাট্রিবিউটের ভ্যালু চেক করে। দুটি ক্ষেত্রেই, যদি অ্যাপ্লিকেশনের maxSdkVersion অ্যাট্রিবিউট সিস্টেমের ব্যবহার করা API লেভেলের থেকে কম হয়, তাহলে সিস্টেম অ্যাপ্লিকেশনটি ইনস্টল করতে দেয় না। সিস্টেম আপডেট করার পরে আবার যাচাই করার ক্ষেত্রে, এটি কার্যকরভাবে আপনার ডিভাইস থেকে অ্যাপ্লিকেশন সরিয়ে দেয়।

সিস্টেম আপডেটের পরে এই অ্যাট্রিবিউট কীভাবে আপনার অ্যাপ্লিকেশনকে প্রভাবিত করতে পারে তা ব্যাখ্যা করতে, নিচের উদাহরণটি বিবেচনা করুন:

Google Play-তে প্রকাশিত ম্যানিফেস্টে maxSdkVersion="5" ঘোষণা করা কোনও অ্যাপ্লিকেশন। একজন ব্যবহারকারী যার ডিভাইস Android 1.6 (API লেভেল 4) ভার্সনে চলছে, তিনি অ্যাপটি ডাউনলোড ও ইনস্টল করেন। কয়েক সপ্তাহ পরে, ব্যবহারকারী Android 2.0 (API লেভেল 5) ভার্সনে ওভার-দ্য-এয়ার সিস্টেম আপডেট পান। আপডেট ইনস্টল করার পরে, সিস্টেম অ্যাপ্লিকেশনটির maxSdkVersion চেক করে এবং এটি সফলভাবে পুনরায় যাচাই করে।

অ্যাপ্লিকেশন স্বাভাবিকভাবে কাজ করে। তবে, কিছু সময় পরে, ডিভাইসটি আরেকটি সিস্টেম আপডেট পায়, এইবার Android 2.0.1 (API লেভেল 6)-এ। আপডেটের পরে, সিস্টেম আর অ্যাপ্লিকেশনটি আবার যাচাই করতে পারবে না কারণ সিস্টেমের নিজস্ব API লেভেল (6) এখন অ্যাপ্লিকেশনের দ্বারা সমর্থিত সর্বোচ্চ লেভেলের (5) চেয়ে বেশি। সিস্টেম ব্যবহারকারীকে অ্যাপ্লিকেশনটি দেখতে বাধা দেয়, কার্যত এটি ডিভাইস থেকে সরিয়ে দেয়।

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

এতে চালু করা হয়েছে: API লেভেল ৪

Android-এর কিছু ভার্সন (Android 2.0.1-এর পরবর্তী ভার্সন) ইনস্টলেশন বা আবার যাচাই করার সময় maxSdkVersion অ্যাট্রিবিউট চেক বা এনফোর্স করে না। Google Play ফিল্টার হিসেবে অ্যাট্রিবিউট ব্যবহার করা চালিয়ে যায়, তবে, ব্যবহারকারীদের ডাউনলোডের জন্য উপলভ্য অ্যাপ্লিকেশন দেখানোর সময়।
চালু করা হয়েছে:
API লেভেল ১

API লেভেল কী?

API লেভেল হল একটি পূর্ণসংখ্যা যা Android প্ল্যাটফর্মের কোনও ভার্সনের মাধ্যমে অফার করা ফ্রেমওয়ার্ক API রিভিশনকে অনন্যভাবে শনাক্ত করে।

Android প্ল্যাটফর্ম একটি ফ্রেমওয়ার্ক API প্রদান করে যা অ্যাপ্লিকেশনগুলি Android সিস্টেমের সাথে ইন্টার‍্যাক্ট করার জন্য ব্যবহার করতে পারে। ফ্রেমওয়ার্ক API-তে এগুলি থাকে:

  • প্যাকেজ ও ক্লাসের একটি মূল সেট
  • ম্যানিফেস্ট ফাইল ঘোষণা করার জন্য XML এলিমেন্ট ও অ্যাট্রিবিউটের সেট
  • রিসোর্স ঘোষণা ও অ্যাক্সেস করার জন্য XML এলিমেন্ট ও অ্যাট্রিবিউটের সেট
  • ইন্টেন্টের একটি সেট
  • অ্যাপ্লিকেশন যেসব অনুমতির জন্য অনুরোধ করতে পারে তার একটি সেট, এর পাশাপাশি সিস্টেমে অন্তর্ভুক্ত অনুমতির এনফোর্সমেন্ট

Android প্ল্যাটফর্মের প্রতিটি পরবর্তী ভার্সনে Android অ্যাপ্লিকেশন ফ্রেমওয়ার্ক API-এর আপডেট অন্তর্ভুক্ত থাকতে পারে।

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

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

Android প্ল্যাটফর্ম যে ফ্রেমওয়ার্ক API প্রদান করে তা API লেভেল নামক একটি পূর্ণসংখ্যা শনাক্তকারী ব্যবহার করে নির্দিষ্ট করা হয়। প্রতিটি Android প্ল্যাটফর্ম ভার্সন ঠিক একটি API লেভেল সাপোর্ট করে, যদিও আগের সব API লেভেলের জন্য সাপোর্ট অন্তর্নিহিত থাকে (API লেভেল ১ পর্যন্ত)। Android প্ল্যাটফর্মের প্রাথমিক রিলিজে API লেভেল ১ প্রদান করা হয়েছিল এবং পরবর্তী রিলিজে API লেভেল বাড়ানো হয়েছে। প্রি-রিলিজ প্রিভিউ SDK-তে পরিচয় করানো বা বন্ধ করা API যা প্ল্যাটফর্মের স্থিতিশীলতায় পৌঁছায়নি সেগুলিকে API লেভেল নম্বরের পরিবর্তে "API ডেভেলপ করা হচ্ছে" হিসেবে চিহ্নিত করা হয়।

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

প্ল্যাটফর্ম ভার্সনAPI লেভেলVERSION_CODEনোট
Android 17 ৩৭ CINNAMON_BUN প্ল্যাটফর্ম হাইলাইট
Android 16 ৩৬ BAKLAVA প্ল্যাটফর্ম হাইলাইট
Android 15 ৩৫ VANILLA_ICE_CREAM প্ল্যাটফর্ম হাইলাইট
Android 14 ৩৪ UPSIDE_DOWN_CAKE প্ল্যাটফর্ম হাইলাইট
Android 13 ৩৩ TIRAMISU প্ল্যাটফর্ম হাইলাইট
Android 12 ৩২ S_V2 প্ল্যাটফর্ম হাইলাইট
৩১ S প্ল্যাটফর্ম হাইলাইট
Android 11 ৩০ R প্ল্যাটফর্ম হাইলাইট
Android 10 ২৯ Q প্ল্যাটফর্ম হাইলাইট
Android 9 ২৮ P প্ল্যাটফর্ম হাইলাইট
Android 8.1 ২৭ O_MR1 প্ল্যাটফর্ম হাইলাইট
Android 8.0 ২৬ O প্ল্যাটফর্ম হাইলাইট
Android 7.1.1
Android 7.1
25 N_MR1 প্ল্যাটফর্ম হাইলাইট
Android 7.0 ২৪ N প্ল্যাটফর্ম হাইলাইট
Android 6.0 ২৩ M প্ল্যাটফর্ম হাইলাইট
Android 5.1 ২২ LOLLIPOP_MR1 প্ল্যাটফর্ম হাইলাইট
Android 5.0 ২১ LOLLIPOP
Android 4.4W ২০ KITKAT_WATCH শুধুমাত্র পরিধানযোগ্য হালকা ও ছোট ডিভাইসের জন্য KitKat
Android 4.4 19 KITKAT প্ল্যাটফর্ম হাইলাইট
Android 4.3 ১৮ JELLY_BEAN_MR2 প্ল্যাটফর্ম হাইলাইট
Android 4.2, 4.2.2 ১৭ JELLY_BEAN_MR1 প্ল্যাটফর্ম হাইলাইট
Android 4.1, 4.1.1 ১৬ JELLY_BEAN প্ল্যাটফর্ম হাইলাইট
Android 4.0.3, 4.0.4 ১৫ ICE_CREAM_SANDWICH_MR1 প্ল্যাটফর্ম হাইলাইট
Android 4.0, 4.0.1, 4.0.2 ১৪ ICE_CREAM_SANDWICH
Android 3.2 ১৩ HONEYCOMB_MR2
Android 3.1.x ১২ HONEYCOMB_MR1 প্ল্যাটফর্ম হাইলাইট
Android 3.0.x ১১ HONEYCOMB প্ল্যাটফর্ম হাইলাইট
Android 2.3.4
Android 2.3.3
১০ GINGERBREAD_MR1 প্ল্যাটফর্ম হাইলাইট
Android 2.3.2
Android 2.3.1
Android 2.3
9 GINGERBREAD
Android 2.2.x ৮ FROYO প্ল্যাটফর্ম হাইলাইট
Android 2.1.x ৭ ECLAIR_MR1 প্ল্যাটফর্ম হাইলাইট
Android 2.0.1 ৬ ECLAIR_0_1
Android 2.0 ৫ ECLAIR
Android 1.6 ৪ DONUT প্ল্যাটফর্ম হাইলাইট
Android 1.5 ৩ CUPCAKE প্ল্যাটফর্ম হাইলাইট
Android 1.1 2 BASE_1_1
Android 1.0 1 BASE

ডেভেলপ করা হচ্ছে এমন API

Android API রেফারেন্স ডকুমেন্টেশনে, প্রি-রিলিজ SDK-তে যোগ করা বা বাতিল করা API-কে API লেভেল নম্বরের পরিবর্তে "API ডেভেলপ করা হচ্ছে" হিসেবে চিহ্নিত করা হয়। SDK প্ল্যাটফর্ম স্টেবিলিটিতে না পৌঁছানো এবং চূড়ান্ত প্রধান বা অপ্রধান API লেভেল না পাওয়া পর্যন্ত এই লেবেল "এতে যোগ করা হয়েছে" এবং "এতে বন্ধ করা হয়েছে" উভয় বিজ্ঞপ্তির ক্ষেত্রেই প্রযোজ্য। ডেভেলপমেন্টের অধীনে থাকা API-এর নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • প্রি-রিলিজ প্রিভিউ স্ট্যাটাস: API যোগ করা বা বন্ধ করা হল API লেভেল চূড়ান্ত করার আগে অ্যাক্টিভ বিটা বা Canary প্রিভিউ SDK রিলিজের অংশ।
  • স্থায়িত্বের কোনও গ্যারেন্টি নেই: রিলিজ করা API-এর (যেগুলির স্থায়ী API লেভেল আছে এবং ভবিষ্যতের রিলিজ জুড়ে ব্যাকওয়ার্ড-কম্প্যাটিবল) মতো নয়, ডেভেলপমেন্টের পর্যায়ে থাকা API-এর সিগনেচার পরিবর্তন হতে পারে, নাম পরিবর্তন হতে পারে অথবা প্রিভিউ SDK রিলিজের মধ্যে সম্পূর্ণভাবে সরিয়ে দেওয়া হতে পারে।

রানটাইমে ডেভেলপমেন্টের অধীনে থাকা API চেক করুন (PREVIEW_SDK_INT)

যেহেতু ডেভেলপমেন্টের অধীনে থাকা API প্রিভিউ রিলিজের মধ্যে পরিবর্তন হতে বা অদৃশ্য হতে পারে, তাই রিলিজ না হওয়া API-তে কল সুরক্ষিত করতে কখনও 'এর থেকে বেশি বা সমান' চেক (>=) ব্যবহার করবেন না। প্রিভিউ ১-এ থাকা API, প্রিভিউ ২-এ পরিবর্তন করা বা বাদ দেওয়া হতে পারে।

পরিবর্তে, প্রিভিউ ফিচার নিয়ে পরীক্ষা করা অ্যাপগুলিকে অবশ্যই Build.VERSION.PREVIEW_SDK_INT ভ্যালু চেক করতে হবে যাতে অ্যাপটি যে সঠিক প্রিভিউ রিভিশনের সাথে কম্পাইল করা হয়েছে তার সাথে কঠোর সমতা (==) থাকে:

  • চূড়ান্ত, প্রোডাকশন বিল্ড ও রিলিজের ক্ষেত্রে, Build.VERSION.PREVIEW_SDK_INT সবসময় 0 হয়।
  • প্রিভিউ বিল্ডে, প্রতিটি রিলিজের জন্য PREVIEW_SDK_INT অনন্য।

Android-এ API লেভেলের ব্যবহার

API লেভেল আইডেন্টিফায়ার ব্যবহারকারী ও অ্যাপ্লিকেশন ডেভেলপারদের জন্য সম্ভাব্য সেরা অভিজ্ঞতা নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে:

  • এটি Android প্ল্যাটফর্মকে সর্বাধিক ফ্রেমওয়ার্ক API রিভিশন বর্ণনা করতে দেয় যা এটি সাপোর্ট করে।
  • এটি অ্যাপ্লিকেশনকে ফ্রেমওয়ার্ক API-এর যে রিভিশন প্রয়োজন তা বর্ণনা করতে দেয়।
  • এটি সিস্টেমকে ব্যবহারকারীর ডিভাইসে অ্যাপ্লিকেশন ইনস্টল করার ব্যাপারে আলোচনা করতে দেয় যাতে ভার্সন-অসামঞ্জস্যপূর্ণ অ্যাপ্লিকেশন ইনস্টল না হয়।

প্রতিটি Android প্ল্যাটফর্ম ভার্সন, Android সিস্টেমের মধ্যেই ইন্টার্নালি API লেভেল আইডেন্টিফায়ার স্টোর করে।

অ্যাপ্লিকেশন ফ্রেমওয়ার্ক API—<uses-sdk>—দ্বারা প্রদান করা ম্যানিফেস্ট এলিমেন্ট ব্যবহার করে সর্বনিম্ন ও সর্বাধিক API লেভেল বর্ণনা করতে পারে যার অধীনে সেগুলি রান করতে পারে এবং সেইসাথে পছন্দের API লেভেল যা সেগুলি সাপোর্ট করার জন্য ডিজাইন করা হয়েছে। এলিমেন্টটি তিনটি মূল অ্যাট্রিবিউট অফার করে:

  • android:minSdkVersion: ন্যূনতম API লেভেল যেখানে অ্যাপ্লিকেশনটি রান করতে পারবে। ডিফল্ট ভ্যালু হল "১"।
  • android:targetSdkVersion: API লেভেল যেখানে অ্যাপ্লিকেশনটি চালানোর জন্য ডিজাইন করা হয়েছে। কিছু ক্ষেত্রে, এটি অ্যাপ্লিকেশনকে টার্গেট API লেভেলে সংজ্ঞায়িত ম্যানিফেস্ট এলিমেন্ট বা আচরণ ব্যবহার করতে দেয়, শুধুমাত্র ন্যূনতম API লেভেলের জন্য সংজ্ঞায়িত করা এলিমেন্ট বা আচরণ ব্যবহারের মধ্যে সীমাবদ্ধ না রেখে।
  • android:maxSdkVersion: সর্বাধিক API লেভেল যেখানে অ্যাপ্লিকেশনটি রান করতে পারে। গুরুত্বপূর্ণ: এই অ্যাট্রিবিউট ব্যবহার করার আগে এই পৃষ্ঠায় এই অ্যাট্রিবিউট সম্পর্কে তথ্য পড়ে নিন।

যেমন, কোনও অ্যাপ্লিকেশন চালানোর জন্য প্রয়োজনীয় ন্যূনতম সিস্টেম API লেভেল নির্দিষ্ট করতে, অ্যাপ্লিকেশনটি তার ম্যানিফেস্টে android:minSdkVersion অ্যাট্রিবিউট সহ <uses-sdk> এলিমেন্ট অন্তর্ভুক্ত করে। android:minSdkVersion-এর মান হল পূর্ণসংখ্যা যা Android প্ল্যাটফর্মের সবচেয়ে পুরনো ভার্সনের API লেভেলের সাথে সম্পর্কিত যার অধীনে অ্যাপ্লিকেশনটি রান করতে পারে।

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

  • android:minSdkVersion অ্যাট্রিবিউট ঘোষণা করা হলে, সেটির ভ্যালু সিস্টেমের API লেভেল ইন্টিজারের সমান বা তার চেয়ে কম হয়। ঘোষণা করা না হলে, সিস্টেম ধরে নেয় যে অ্যাপ্লিকেশনটির জন্য API লেভেল ১ প্রয়োজন।
  • android:maxSdkVersion অ্যাট্রিবিউট ঘোষণা করা হলে, এর ভ্যালু সিস্টেমের API লেভেল ইন্টিজারের সমান বা তার চেয়ে বেশি হয়। ঘোষণা না করা হলে, সিস্টেম ধরে নেয় যে অ্যাপ্লিকেশনের কোনও সর্বাধিক API লেভেল নেই। সিস্টেম কীভাবে এটি ম্যানেজ করে সেই সম্পর্কে আরও তথ্য পেতে এই অ্যাট্রিবিউটের বিবরণ পড়ুন।

অ্যাপ্লিকেশনের ম্যানিফেস্টে ঘোষণা করা হলে, <uses-sdk> এলিমেন্টটি দেখতে এইরকম হতে পারে:

<manifest>
  <uses-sdk android:minSdkVersion="5" />
  ...
</manifest>

android:minSdkVersion-এ কোনও অ্যাপ্লিকেশন API লেভেল ঘোষণা করার প্রধান কারণ হল Android সিস্টেমকে জানানো যে এটি নির্দিষ্ট API লেভেলে চালু করা API ব্যবহার করে।

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

ডেভেলপমেন্ট সংক্রান্ত বিবেচ্য বিষয়

আপনার অ্যাপ্লিকেশন ডেভেলপ করার সময় API লেভেল সম্পর্কিত যেসব তথ্য আপনাকে বিবেচনা করতে হবে, সেগুলি নিম্নলিখিত বিভাগে দেওয়া হয়েছে।

অ্যাপ্লিকেশন ফরওয়ার্ড কম্প্যাটিবিলিটি

Android অ্যাপ্লিকেশন সাধারণত Android প্ল্যাটফর্মের নতুন ভার্সনের সাথে ফরওয়ার্ড-কম্প্যাটিবেল হয়।

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

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

API-এর নিচে করা পরিবর্তন, যেমন অন্তর্নিহিত সিস্টেমে করা পরিবর্তন, নতুন পরিবেশে আপনার অ্যাপ্লিকেশন চালানোর সময় সেটিকে প্রভাবিত করতে পারে। অ্যাপ্লিকেশন ডেভেলপার হিসেবে আপনার জন্য এটি বোঝা গুরুত্বপূর্ণ যে প্রতিটি সিস্টেম এনভায়রনমেন্টে অ্যাপ্লিকেশনটি কেমন দেখায় এবং আচরণ করে।

Android প্ল্যাটফর্মের বিভিন্ন ভার্সনে আপনার অ্যাপ্লিকেশন পরীক্ষা করতে সাহায্য করার জন্য, Android SDK-তে একাধিক প্ল্যাটফর্ম অন্তর্ভুক্ত থাকে যা আপনি ডাউনলোড করতে পারেন। প্রতিটি প্ল্যাটফর্মে একটি মানানসই সিস্টেম ইমেজ থাকে যা আপনি নিজের অ্যাপ্লিকেশন পরীক্ষা করার জন্য AVD-তে চালাতে পারেন।

অ্যাপ্লিকেশনের ব্যাকওয়ার্ড কম্প্যাটিবিলিটি

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

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

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

প্ল্যাটফর্ম ভার্সন ও API লেভেল বেছে নিন

আপনার অ্যাপ্লিকেশন ডেভেলপ করার সময়, আপনি প্ল্যাটফর্মের সেই ভার্সন বেছে নেন যার সাথে আপনি অ্যাপ্লিকেশন কম্পাইল করেন। সাধারণত, আপনার অ্যাপ্লিকেশন সাপোর্ট করতে পারে এমন প্ল্যাটফর্মের সর্বনিম্ন সম্ভাব্য ভার্সনের সাথে আপনার অ্যাপ্লিকেশন কম্পাইল করুন।

আপনি ক্রমাগত কম বিল্ড টার্গেটের বিপরীতে অ্যাপ্লিকেশন কম্পাইল করে সর্বনিম্ন সম্ভাব্য প্ল্যাটফর্ম ভার্সন নির্ধারণ করতে পারেন। সবচেয়ে পুরনো ভার্সন নির্ধারণ করার পরে, সংশ্লিষ্ট প্ল্যাটফর্ম ভার্সন ও API লেভেল ব্যবহার করে একটি AVD তৈরি করুন এবং আপনার অ্যাপ্লিকেশন সম্পূর্ণভাবে পরীক্ষা করুন। অ্যাপ্লিকেশনের ম্যানিফেস্টে android:minSdkVersion অ্যাট্রিবিউট ঘোষণা করতে ভুলবেন না এবং প্ল্যাটফর্ম ভার্সনের API লেভেলে এর ভ্যালু সেট করুন।

ন্যূনতম API লেভেল ঘোষণা করা

আপনি যদি এমন কোনও অ্যাপ্লিকেশন তৈরি করেন যা লেটেস্ট প্ল্যাটফর্ম ভার্সনে পরিচয় করানো API বা সিস্টেম ফিচার ব্যবহার করে, তাহলে android:minSdkVersion অ্যাট্রিবিউট লেটেস্ট প্ল্যাটফর্ম ভার্সনের API লেভেলে সেট করুন। এটি করা হয় যাতে ব্যবহারকারীরা শুধুমাত্র তখনই আপনার অ্যাপ্লিকেশন ইনস্টল করতে পারেন যখন তাদের ডিভাইসে Android প্ল্যাটফর্মের একটি মানানসই ভার্সন চলছে। এর ফলে, আপনার অ্যাপ্লিকেশন যাতে তাদের ডিভাইসে সঠিকভাবে কাজ করতে পারে তা নিশ্চিত করতে সাহায্য করে।

আপনার অ্যাপ্লিকেশন যদি লেটেস্ট প্ল্যাটফর্ম ভার্সনে চালু করা API ব্যবহার করে কিন্তু android:minSdkVersion অ্যাট্রিবিউট ঘোষণা না করে, তাহলে এটি প্ল্যাটফর্মের লেটেস্ট ভার্সন রান করা ডিভাইসে সঠিকভাবে রান করে, কিন্তু প্ল্যাটফর্মের আগের ভার্সন রান করা ডিভাইসে না। পরবর্তী ক্ষেত্রে, রানটাইমে অ্যাপ্লিকেশন ক্র্যাশ করে যখন এটি এমন API ব্যবহার করার চেষ্টা করে যা আগের ভার্সনে নেই।

আরও উন্নত API লেভেলে পরীক্ষা করা

আপনার অ্যাপ্লিকেশন কম্পাইল করার পরে, অ্যাপ্লিকেশনের android:minSdkVersion অ্যাট্রিবিউটে উল্লেখ করা প্ল্যাটফর্মে এটি পরীক্ষা করতে ভুলবেন না। এটি করতে, এমন একটি AVD তৈরি করুন যা আপনার অ্যাপ্লিকেশনের জন্য প্রয়োজনীয় প্ল্যাটফর্ম ভার্সন ব্যবহার করে। এছাড়াও, ফরওয়ার্ড-কম্প্যাটিবিলিটি চেক করতে, আপনার অ্যাপ্লিকেশনের ব্যবহার করা API লেভেলের চেয়ে উচ্চতর API লেভেল ব্যবহার করে এমন সব প্ল্যাটফর্মে অ্যাপ্লিকেশনটি রান ও টেস্ট করুন।

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

আপডেটার অ্যাক্সেস করতে, <sdk>/tools ডিরেক্টরিতে অবস্থিত android কমান্ড-লাইন টুল ব্যবহার করুন। আপনি android sdk এক্সিকিউট করে SDK আপডেটার চালু করতে পারবেন। এছাড়াও, আপনি android.bat (Windows) বা android (OS X/Linux) ফাইলে ডবল ক্লিক করতে পারেন।

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

API লেভেল অনুযায়ী রেফারেন্স ডকুমেন্টেশন ফিল্টার করুন

Android প্ল্যাটফর্ম রেফারেন্স ডকুমেন্টেশন পৃষ্ঠা প্রতিটি পৃষ্ঠার উপরে বাঁদিকে "API লেভেল" কন্ট্রোল করার সুবিধা দেয়। আপনি কন্ট্রোল ব্যবহার করে API-এর শুধুমাত্র সেইসব অংশের ডকুমেন্টেশন দেখাতে পারেন যেগুলি আপনার অ্যাপ্লিকেশনের জন্য অ্যাক্সেসযোগ্য, এটি API লেভেলের উপর নির্ভর করে যা ম্যানিফেস্ট ফাইলের android:minSdkVersion অ্যাট্রিবিউটে উল্লেখ করা থাকে।

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

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

সম্পূর্ণ ডকুমেন্টেশন দেখার জন্য, API লেভেল মেনুর উপরে REL বিকল্প বেছে নিন। ডিফল্ট হিসেবে, API লেভেল ফিল্টারিং বন্ধ করা থাকে, যাতে আপনি API লেভেল নির্বিশেষে সম্পূর্ণ ফ্রেমওয়ার্ক API দেখতে পারেন।

প্রতিটি API এলিমেন্টের রেফারেন্স ডকুমেন্টেশনে API লেভেল উল্লেখ করা থাকে, যেখানে প্রতিটি এলিমেন্ট চালু বা বন্ধ করা হয়। প্যাকেজ ও ক্লাসের জন্য API লেভেল "API লেভেলে যোগ করা হয়েছে" হিসেবে উল্লেখ করা হয় এবং প্রযোজ্য হলে, প্রতিটি ডকুমেন্টেশন পৃষ্ঠার কন্টেন্ট এলাকার উপরে ডানদিকের কোণে "API লেভেলে বন্ধ করা হয়েছে" হিসেবে উল্লেখ করা হয়। ক্লাস মেম্বারদের জন্য API লেভেল তাদের বিস্তারিত বিবরণ হেডারের ডানদিকের মার্জিনে উল্লেখ করা থাকে। প্রি-রিলিজ API যোগ করা বা বন্ধ করার জন্য যা প্ল্যাটফর্মের স্থিতিশীলতায় পৌঁছায়নি, এইসব লোকেশনে API লেভেল নম্বরের পরিবর্তে "API ডেভেলপ করা হচ্ছে" দেখায়।