গুগল প্লে আপনার অ্যাপ ম্যানিফেস্টে ঘোষিত <uses-sdk> অ্যাট্রিবিউট ব্যবহার করে সেইসব ডিভাইস থেকে আপনার অ্যাপকে ফিল্টার করে, যেগুলো এর প্ল্যাটফর্ম ভার্সনের শর্ত পূরণ করে না। এই অ্যাট্রিবিউটগুলো সেট করার আগে, নিশ্চিত হয়ে নিন যে আপনি গুগল প্লে ফিল্টার সম্পর্কে জানেন।
- সিনট্যাক্স:
<uses-sdk android:minSdkVersion="integer" android:targetSdkVersion="integer" android:maxSdkVersion="integer" />
- এর মধ্যে অন্তর্ভুক্ত:
-
<manifest> - বর্ণনা:
এটি আপনাকে একটি এপিআই লেভেল ইন্টিজারের মাধ্যমে অ্যান্ড্রয়েড প্ল্যাটফর্মের এক বা একাধিক সংস্করণের সাথে একটি অ্যাপ্লিকেশনের সামঞ্জস্যতা প্রকাশ করতে দেয়। একটি অ্যাপ্লিকেশন দ্বারা প্রকাশিত এপিআই লেভেলকে একটি নির্দিষ্ট অ্যান্ড্রয়েড সিস্টেমের এপিআই লেভেলের সাথে তুলনা করা হয়, যা বিভিন্ন অ্যান্ড্রয়েড ডিভাইসে ভিন্ন হতে পারে।
নামটি এপিআই লেভেল হলেও, এই এলিমেন্টটি সফটওয়্যার ডেভেলপমেন্ট কিট (SDK) বা অ্যান্ড্রয়েড প্ল্যাটফর্মের ভার্সন নম্বর নির্দিষ্ট করতে ব্যবহৃত হয় না । এপিআই লেভেল সর্বদা একটি একক পূর্ণসংখ্যা। এর সাথে যুক্ত অ্যান্ড্রয়েড ভার্সন নম্বর থেকে এপিআই লেভেল বের করা যায় না। উদাহরণস্বরূপ, এটি মেজর ভার্সন বা মেজর ও মাইনর ভার্সনের যোগফলের সমান নয়।
কোনো অ্যাপ একটি মাইনর এসডিকে ভার্সনকে টার্গেট করবে বা সেটির প্রয়োজন হবে, তা নির্দিষ্ট করে দেওয়া সম্ভব নয়।
আপনার অ্যাপ্লিকেশনগুলোর ভার্সনিং সম্পর্কিত ডকুমেন্টটিও পড়ুন।
- বৈশিষ্ট্য:
-
android:minSdkVersion - অ্যাপ্লিকেশনটি চালানোর জন্য প্রয়োজনীয় সর্বনিম্ন এপিআই লেভেল নির্দেশকারী একটি পূর্ণসংখ্যা। যদি সিস্টেমের এপিআই লেভেল এই অ্যাট্রিবিউটে নির্দিষ্ট করা মানের চেয়ে কম হয়, তবে অ্যান্ড্রয়েড সিস্টেম ব্যবহারকারীকে অ্যাপ্লিকেশনটি ইনস্টল করতে বাধা দেয়। সর্বদা এই অ্যাট্রিবিউটটি ঘোষণা করুন।
সতর্কতা: আপনি যদি এই অ্যাট্রিবিউটটি ঘোষণা না করেন, তাহলে সিস্টেম ডিফল্ট মান হিসেবে "1" ধরে নেয়, যা নির্দেশ করে যে আপনার অ্যাপ্লিকেশনটি অ্যান্ড্রয়েডের সমস্ত সংস্করণের সাথে সামঞ্জস্যপূর্ণ। যদি তা না হয় , এবং আপনি সঠিক
minSdkVersionঘোষণা না করে থাকেন, তাহলে অসামঞ্জস্যপূর্ণ API লেভেলের কোনো সিস্টেমে ইনস্টল করার পর, অ্যাপ্লিকেশনটি রানটাইমে অনুপলব্ধ API-গুলো অ্যাক্সেস করার চেষ্টা করার সময় ক্র্যাশ করবে। এই কারণে,minSdkVersionঅ্যাট্রিবিউটে যথাযথ API লেভেল ঘোষণা করতে ভুলবেন না। -
android:targetSdkVersion - একটি পূর্ণসংখ্যা যা অ্যাপ্লিকেশনটির লক্ষ্য করা এপিআই স্তরকে নির্দেশ করে। যদি এটি সেট করা না থাকে, তবে ডিফল্ট মান
minSdkVersionএর প্রদত্ত মানের সমান হয়।এই অ্যাট্রিবিউটটি সিস্টেমকে জানায় যে আপনি টার্গেট ভার্সনের সাথে পরীক্ষা করেছেন, এবং টার্গেট ভার্সনের সাথে আপনার অ্যাপের ফরোয়ার্ড-কম্প্যাটিবিলিটি বজায় রাখার জন্য সিস্টেম কোনো কম্প্যাটিবিলিটি আচরণ সক্রিয় করে না। অ্যাপ্লিকেশনটি নিম্নতর ভার্সনগুলোতেও (
minSdkVersionপর্যন্ত) চলতে সক্ষম।অ্যান্ড্রয়েড প্রতিটি নতুন সংস্করণের সাথে বিকশিত হওয়ার ফলে, কিছু আচরণ এবং এমনকি চেহারাও পরিবর্তিত হতে পারে। তবে, যদি প্ল্যাটফর্মের এপিআই লেভেল আপনার অ্যাপের '
targetSdkVersion' দ্বারা ঘোষিত সংস্করণের চেয়ে বেশি হয়, তাহলে সিস্টেম সামঞ্জস্যপূর্ণ আচরণগুলো সক্রিয় করতে পারে, যাতে আপনার অ্যাপটি আপনার প্রত্যাশা অনুযায়ী কাজ করতে থাকে। আপনি যে প্ল্যাটফর্মে এটি চালাচ্ছেন তার এপিআই লেভেলের সাথে মিলিয়েtargetSdkVersionনির্দিষ্ট করার মাধ্যমে এই ধরনের সামঞ্জস্যপূর্ণ আচরণগুলো নিষ্ক্রিয় করতে পারেন।উদাহরণস্বরূপ, এই মান "১১" বা তার বেশি সেট করলে, অ্যান্ড্রয়েড ৩.০ বা তার উচ্চতর সংস্করণে চলার সময় সিস্টেম আপনার অ্যাপে হলো ডিফল্ট থিম প্রয়োগ করে এবং বড় স্ক্রিনে চলার সময় স্ক্রিন কম্প্যাটিবিলিটি মোড নিষ্ক্রিয় করে দেয়, কারণ এপিআই লেভেল ১১-এর সমর্থন পরোক্ষভাবে বড় স্ক্রিনকেও সমর্থন করে।
এই অ্যাট্রিবিউটের জন্য আপনার সেট করা মানের উপর ভিত্তি করে সিস্টেম অনেক সামঞ্জস্যপূর্ণ আচরণ সক্রিয় করতে পারে। এই আচরণগুলোর মধ্যে বেশ কয়েকটি
Build.VERSION_CODESরেফারেন্সে সংশ্লিষ্ট প্ল্যাটফর্ম সংস্করণ দ্বারা বর্ণিত আছে।প্রতিটি অ্যান্ড্রয়েড রিলিজের সাথে আপনার অ্যাপ্লিকেশনটিকে হালনাগাদ রাখতে, এই অ্যাট্রিবিউটের মান বাড়িয়ে সর্বশেষ এপিআই লেভেলের সাথে মিলিয়ে দিন, তারপর সংশ্লিষ্ট প্ল্যাটফর্ম সংস্করণে আপনার অ্যাপ্লিকেশনটি পুঙ্খানুপুঙ্খভাবে পরীক্ষা করুন।
API লেভেল 4-এ চালু করা হয়েছে
- একটি পূর্ণসংখ্যা যা সর্বোচ্চ এপিআই স্তর নির্দেশ করে, যে স্তরে অ্যাপ্লিকেশনটি চলার জন্য ডিজাইন করা হয়েছে।
অ্যান্ড্রয়েড ১.৫, ১.৬, ২.০ এবং ২.০.১-এ, কোনো অ্যাপ্লিকেশন ইনস্টল করার সময় এবং সিস্টেম আপডেটের পর অ্যাপ্লিকেশনটি পুনরায় যাচাই করার সময় সিস্টেম এই অ্যাট্রিবিউটের মান পরীক্ষা করে। উভয় ক্ষেত্রেই, যদি অ্যাপ্লিকেশনটির
maxSdkVersionঅ্যাট্রিবিউটের মান সিস্টেম নিজে যে API লেভেল ব্যবহার করে তার থেকে কম হয়, তাহলে সিস্টেম অ্যাপ্লিকেশনটি ইনস্টল হতে দেয় না। সিস্টেম আপডেটের পর পুনরায় যাচাই করার ক্ষেত্রে, এটি কার্যকরভাবে আপনার অ্যাপ্লিকেশনটিকে ডিভাইস থেকে মুছে ফেলে।সিস্টেম আপডেটের পর এই অ্যাট্রিবিউটটি আপনার অ্যাপ্লিকেশনকে কীভাবে প্রভাবিত করতে পারে তা বোঝানোর জন্য, নিম্নলিখিত উদাহরণটি বিবেচনা করুন:
একটি অ্যাপ্লিকেশন, যার ম্যানিফেস্টে
maxSdkVersion="5"উল্লেখ করা আছে, সেটি গুগল প্লে-তে প্রকাশ করা হয়। একজন ব্যবহারকারী, যার ডিভাইসে অ্যান্ড্রয়েড ১.৬ (এপিআই লেভেল ৪) চলছে, তিনি অ্যাপটি ডাউনলোড ও ইনস্টল করেন। কয়েক সপ্তাহ পর, ব্যবহারকারী অ্যান্ড্রয়েড ২.০ (এপিআই লেভেল ৫)-এর একটি ওভার-দ্য-এয়ার সিস্টেম আপডেট পান। আপডেটটি ইনস্টল হওয়ার পর, সিস্টেম অ্যাপ্লিকেশনটিরmaxSdkVersionপরীক্ষা করে এবং সফলভাবে সেটিকে পুনরায় বৈধতা দেয়।অ্যাপ্লিকেশনটি স্বাভাবিকভাবে কাজ করে। তবে, কিছু সময় পরে, ডিভাইসটি আরেকটি সিস্টেম আপডেট পায়, এবার অ্যান্ড্রয়েড 2.0.1 (API লেভেল 6)। আপডেটের পরে, সিস্টেম আর অ্যাপ্লিকেশনটিকে পুনরায় যাচাই করতে পারে না কারণ সিস্টেমের নিজস্ব API লেভেল (6) এখন অ্যাপ্লিকেশন দ্বারা সমর্থিত সর্বোচ্চ (5) লেভেলের চেয়ে বেশি। সিস্টেম অ্যাপ্লিকেশনটিকে ব্যবহারকারীর কাছে দৃশ্যমান হতে বাধা দেয়, যার ফলে এটি ডিভাইস থেকে মুছে যায়।
সতর্কীকরণ: আমরা এই অ্যাট্রিবিউটটি ডিক্লেয়ার করার পরামর্শ দিই না। প্রথমত, অ্যান্ড্রয়েড প্ল্যাটফর্মের নতুন সংস্করণগুলো প্রকাশিত হওয়ার সাথে সাথে সেগুলোতে আপনার অ্যাপ্লিকেশনের ডেপ্লয়মেন্ট আটকানোর জন্য এই অ্যাট্রিবিউটটি সেট করার কোনো প্রয়োজন নেই। ডিজাইন অনুযায়ী, প্ল্যাটফর্মের নতুন সংস্করণগুলো সম্পূর্ণরূপে ব্যাকওয়ার্ড-কম্প্যাটিবল। আপনার অ্যাপ্লিকেশনটি নতুন সংস্করণগুলোতে সঠিকভাবে কাজ করে, যদি এটি শুধুমাত্র স্ট্যান্ডার্ড এপিআই ব্যবহার করে এবং ডেভেলপমেন্টের সেরা অনুশীলনগুলো অনুসরণ করে। দ্বিতীয়ত, কিছু ক্ষেত্রে এই অ্যাট্রিবিউটটি ডিক্লেয়ার করার ফলে উচ্চতর এপিআই লেভেলে সিস্টেম আপডেটের পর ব্যবহারকারীদের ডিভাইস থেকে আপনার অ্যাপ্লিকেশনটি মুছে যেতে পারে। আপনার অ্যাপ্লিকেশনটি যে ডিভাইসগুলোতে ইনস্টল হওয়ার সম্ভাবনা রয়েছে, সেগুলোর বেশিরভাগই ওভার-দ্য-এয়ার (OTA) পদ্ধতিতে নিয়মিত সিস্টেম আপডেট পায়, তাই এই অ্যাট্রিবিউটটি সেট করার আগে আপনার অ্যাপ্লিকেশনের উপর এর প্রভাব বিবেচনা করুন।
API লেভেল 4-এ চালু করা হয়েছে
অ্যান্ড্রয়েডের কিছু সংস্করণ (অ্যান্ড্রয়েড ২.০.১-এর পরবর্তী সংস্করণগুলো) ইনস্টলেশন বা পুনঃ-যাচাইয়ের সময়maxSdkVersionঅ্যাট্রিবিউটটি পরীক্ষা বা প্রয়োগ করে না। তবে, ব্যবহারকারীদের ডাউনলোডের জন্য উপলব্ধ অ্যাপ্লিকেশনগুলো দেখানোর সময় গুগল প্লে এই অ্যাট্রিবিউটটিকে একটি ফিল্টার হিসেবে ব্যবহার করতে থাকে।
-
- এতে প্রবর্তন করা হয়েছিল:
- এপিআই স্তর ১
এপিআই লেভেল বলতে কী বোঝায়?
এপিআই লেভেল হলো একটি পূর্ণসংখ্যা, যা অ্যান্ড্রয়েড প্ল্যাটফর্মের কোনো সংস্করণ দ্বারা প্রদত্ত ফ্রেমওয়ার্ক এপিআই রিভিশনকে অনন্যভাবে শনাক্ত করে।
অ্যান্ড্রয়েড প্ল্যাটফর্ম একটি ফ্রেমওয়ার্ক এপিআই প্রদান করে, যা ব্যবহার করে অ্যাপ্লিকেশনগুলো অন্তর্নিহিত অ্যান্ড্রয়েড সিস্টেমের সাথে যোগাযোগ করতে পারে। এই ফ্রেমওয়ার্ক এপিআই-তে রয়েছে:
- প্যাকেজ এবং ক্লাসের একটি মূল সেট
- একটি ম্যানিফেস্ট ফাইল ঘোষণা করার জন্য এক্সএমএল এলিমেন্ট এবং অ্যাট্রিবিউটের একটি সেট
- রিসোর্স ঘোষণা এবং অ্যাক্সেস করার জন্য এক্সএমএল এলিমেন্ট এবং অ্যাট্রিবিউটের একটি সেট
- একগুচ্ছ অভিপ্রায়
- অ্যাপ্লিকেশনগুলো যে অনুমতিগুলোর জন্য অনুরোধ করতে পারে, সেইসাথে সিস্টেমে অন্তর্ভুক্ত অনুমতি প্রয়োগ ব্যবস্থা।
অ্যান্ড্রয়েড প্ল্যাটফর্মের প্রতিটি পরবর্তী সংস্করণে এর সরবরাহকৃত অ্যান্ড্রয়েড অ্যাপ্লিকেশন ফ্রেমওয়ার্ক এপিআই-এর আপডেট অন্তর্ভুক্ত থাকতে পারে।
ফ্রেমওয়ার্ক এপিআই-এর আপডেটগুলো এমনভাবে ডিজাইন করা হয়েছে যাতে নতুন এপিআইটি পূর্ববর্তী সংস্করণগুলোর সাথে সামঞ্জস্যপূর্ণ থাকে। অর্থাৎ, এপিআই-এর বেশিরভাগ পরিবর্তনই সংযোজনমূলক এবং এগুলো নতুন বা প্রতিস্থাপনমূলক কার্যকারিতা যোগ করে। এপিআই-এর কোনো অংশ আপগ্রেড করা হলে, পুরোনো প্রতিস্থাপিত অংশগুলো ডেপ্রিকেটেড (অপ্রচলিত) হয়ে যায় কিন্তু সরিয়ে ফেলা হয় না, যাতে বিদ্যমান অ্যাপ্লিকেশনগুলো তখনও সেগুলো ব্যবহার করতে পারে।
খুব অল্প কিছু ক্ষেত্রে API-এর কিছু অংশ পরিবর্তন বা অপসারণ করা হয়, যদিও সাধারণত এই ধরনের পরিবর্তনগুলি শুধুমাত্র API-এর দৃঢ়তা এবং অ্যাপ্লিকেশন বা সিস্টেমের নিরাপত্তা নিশ্চিত করার জন্যই প্রয়োজন হয়। পূর্ববর্তী সংস্করণগুলির অন্য সমস্ত API অংশ কোনো পরিবর্তন ছাড়াই বহাল রাখা হয়।
একটি অ্যান্ড্রয়েড প্ল্যাটফর্ম যে ফ্রেমওয়ার্ক এপিআই সরবরাহ করে, তা এপিআই লেভেল নামক একটি পূর্ণসংখ্যা শনাক্তকারী ব্যবহার করে নির্দিষ্ট করা হয়। প্রতিটি অ্যান্ড্রয়েড প্ল্যাটফর্ম সংস্করণ ঠিক একটি এপিআই লেভেল সমর্থন করে, যদিও এর আগের সমস্ত এপিআই লেভেলের (এপিআই লেভেল ১ পর্যন্ত) সমর্থন অন্তর্নিহিত থাকে। অ্যান্ড্রয়েড প্ল্যাটফর্মের প্রাথমিক সংস্করণে এপিআই লেভেল ১ প্রদান করা হয়েছিল এবং পরবর্তী সংস্করণগুলোতে এপিআই লেভেল বাড়ানো হয়েছে।
নিম্নলিখিত সারণীতে অ্যান্ড্রয়েড প্ল্যাটফর্মের প্রতিটি সংস্করণ দ্বারা সমর্থিত এপিআই লেভেল উল্লেখ করা হয়েছে। প্রতিটি সংস্করণ কতগুলো ডিভাইসে চলছে, সেই সম্পর্কিত তথ্যের জন্য ডিস্ট্রিবিউশন ড্যাশবোর্ড দেখুন।
অ্যান্ড্রয়েডে এপিআই লেভেলের ব্যবহার
এপিআই লেভেল আইডেন্টিফায়ার ব্যবহারকারী এবং অ্যাপ্লিকেশন ডেভেলপারদের জন্য সর্বোত্তম অভিজ্ঞতা নিশ্চিত করতে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে:
- এর মাধ্যমে অ্যান্ড্রয়েড প্ল্যাটফর্ম তার সমর্থিত সর্বোচ্চ ফ্রেমওয়ার্ক এপিআই রিভিশন বর্ণনা করতে পারে।
- এর মাধ্যমে অ্যাপ্লিকেশনগুলো তাদের প্রয়োজনীয় ফ্রেমওয়ার্ক এপিআই রিভিশন বর্ণনা করতে পারে।
- এটি সিস্টেমকে ব্যবহারকারীর ডিভাইসে অ্যাপ্লিকেশন ইনস্টল করার বিষয়ে আলোচনা করার সুযোগ দেয়, যাতে সংস্করণ-অসামঞ্জস্যপূর্ণ অ্যাপ্লিকেশন ইনস্টল না হয়।
প্রতিটি অ্যান্ড্রয়েড প্ল্যাটফর্ম সংস্করণ তার এপিআই লেভেল আইডেন্টিফায়ারটি অ্যান্ড্রয়েড সিস্টেমের মধ্যেই অভ্যন্তরীণভাবে সংরক্ষণ করে।
অ্যাপ্লিকেশনগুলি ফ্রেমওয়ার্ক API দ্বারা প্রদত্ত একটি ম্যানিফেস্ট এলিমেন্ট— <uses-sdk> —ব্যবহার করে বর্ণনা করতে পারে যে তারা সর্বনিম্ন ও সর্বোচ্চ কোন API লেভেলের অধীনে চলতে সক্ষম, এবং সেইসাথে কোন পছন্দের API লেভেলকে সমর্থন করার জন্য তাদের ডিজাইন করা হয়েছে। এই এলিমেন্টটি তিনটি প্রধান অ্যাট্রিবিউট প্রদান করে:
-
android:minSdkVersion: সর্বনিম্ন এপিআই লেভেল, যেটিতে অ্যাপ্লিকেশনটি চলতে সক্ষম। এর ডিফল্ট মান হলো "1"। -
android:targetSdkVersion: যে এপিআই লেভেলে অ্যাপ্লিকেশনটি চলার জন্য ডিজাইন করা হয়েছে। কিছু ক্ষেত্রে, এটি অ্যাপ্লিকেশনটিকে শুধুমাত্র সর্বনিম্ন এপিআই লেভেলের জন্য সংজ্ঞায়িত উপাদান বা আচরণ ব্যবহারের মধ্যে সীমাবদ্ধ না রেখে, টার্গেট এপিআই লেভেলে সংজ্ঞায়িত ম্যানিফেস্ট উপাদান বা আচরণ ব্যবহার করার সুযোগ দেয়। -
android:maxSdkVersion: সর্বোচ্চ এপিআই লেভেল, যেটিতে অ্যাপ্লিকেশনটি চলতে সক্ষম। গুরুত্বপূর্ণ: এটি ব্যবহার করার আগে এই পৃষ্ঠায় এই অ্যাট্রিবিউটটি সম্পর্কে তথ্য পড়ুন।
উদাহরণস্বরূপ, কোনো অ্যাপ্লিকেশন চালানোর জন্য প্রয়োজনীয় সর্বনিম্ন সিস্টেম এপিআই লেভেল নির্দিষ্ট করতে, অ্যাপ্লিকেশনটি তার ম্যানিফেস্টে android:minSdkVersion অ্যাট্রিবিউটসহ একটি <uses-sdk> এলিমেন্ট অন্তর্ভুক্ত করে। android:minSdkVersion এর মান হলো সেই পূর্ণসংখ্যা যা অ্যান্ড্রয়েড প্ল্যাটফর্মের প্রাচীনতম সংস্করণের এপিআই লেভেলকে নির্দেশ করে, যার অধীনে অ্যাপ্লিকেশনটি চলতে পারে।
যখন ব্যবহারকারী কোনো অ্যাপ্লিকেশন ইনস্টল করার চেষ্টা করেন, অথবা সিস্টেম আপডেটের পর কোনো অ্যাপ্লিকেশন পুনরায় যাচাই করেন, তখন অ্যান্ড্রয়েড সিস্টেম প্রথমে অ্যাপ্লিকেশনটির ম্যানিফেস্টে থাকা <uses-sdk> অ্যাট্রিবিউটগুলো পরীক্ষা করে এবং সেগুলোর মান নিজের অভ্যন্তরীণ এপিআই লেভেলের সাথে তুলনা করে। সিস্টেমটি কেবল তখনই ইনস্টলেশন শুরু করার অনুমতি দেয়, যখন এই শর্তগুলো পূরণ হয়:
- যদি
android:minSdkVersionঅ্যাট্রিবিউটটি ডিক্লেয়ার করা থাকে, তবে এর মান সিস্টেমের API লেভেলের পূর্ণসংখ্যার চেয়ে কম বা সমান হয়। যদি এটি ডিক্লেয়ার করা না থাকে, তবে সিস্টেম ধরে নেয় যে অ্যাপ্লিকেশনটির জন্য API লেভেল ১ প্রয়োজন। - যদি
android:maxSdkVersionঅ্যাট্রিবিউটটি ডিক্লেয়ার করা থাকে, তবে এর মান সিস্টেমের এপিআই লেভেল ইন্টিজারের সমান বা তার চেয়ে বেশি হয়। যদি এটি ডিক্লেয়ার করা না থাকে, তবে সিস্টেম ধরে নেয় যে অ্যাপ্লিকেশনটির কোনো সর্বোচ্চ এপিআই লেভেল নেই। সিস্টেম কীভাবে এটি পরিচালনা করে সে সম্পর্কে আরও তথ্যের জন্য এই অ্যাট্রিবিউটের বিবরণ পড়ুন।
কোনো অ্যাপ্লিকেশনের ম্যানিফেস্টে ঘোষিত হলে, একটি <uses-sdk> এলিমেন্ট দেখতে এইরকম হতে পারে:
<manifest> <uses-sdk android:minSdkVersion="5" /> ... </manifest>
কোনো অ্যাপ্লিকেশন android:minSdkVersion এ এপিআই লেভেল ঘোষণা করার প্রধান কারণ হলো অ্যান্ড্রয়েড সিস্টেমকে এটা জানানো যে, অ্যাপ্লিকেশনটি নির্দিষ্ট এপিআই লেভেলে প্রবর্তিত এপিআইগুলো ব্যবহার করছে।
যদি অ্যাপ্লিকেশনটি কোনোভাবে নিম্নতর এপিআই লেভেলের কোনো প্ল্যাটফর্মে ইনস্টল হয়ে যায়, তাহলে এটি রানটাইমে এমন এপিআই অ্যাক্সেস করার চেষ্টা করার সময় ক্র্যাশ করে যা বিদ্যমান নেই। সিস্টেমটি এই ফলাফল প্রতিরোধ করে, যদি অ্যাপ্লিকেশনটির জন্য প্রয়োজনীয় সর্বনিম্ন এপিআই লেভেলটি টার্গেট ডিভাইসের প্ল্যাটফর্ম ভার্সনের চেয়ে বেশি হয়, তবে অ্যাপ্লিকেশনটিকে ইনস্টল হতে দেয় না।
উন্নয়ন বিবেচনা
নিম্নলিখিত বিভাগগুলিতে এপিআই স্তর সম্পর্কিত তথ্য দেওয়া হয়েছে, যা আপনার অ্যাপ্লিকেশন তৈরি করার সময় বিবেচনা করতে হবে।
অ্যাপ্লিকেশনের অগ্রবর্তী সামঞ্জস্যতা
অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলো সাধারণত অ্যান্ড্রয়েড প্ল্যাটফর্মের নতুন সংস্করণগুলোর সাথে সামঞ্জস্যপূর্ণ থাকে।
যেহেতু ফ্রেমওয়ার্ক এপিআই-এর প্রায় সমস্ত পরিবর্তনই সংযোজনমূলক, তাই এপিআই লেভেল দ্বারা নির্দিষ্ট যেকোনো সংস্করণ ব্যবহার করে তৈরি একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন অ্যান্ড্রয়েড প্ল্যাটফর্মের পরবর্তী সংস্করণ এবং উচ্চতর এপিআই লেভেলগুলোর সাথে ফরোয়ার্ড-কম্প্যাটিবল থাকে। অ্যাপ্লিকেশনটি অ্যান্ড্রয়েড প্ল্যাটফর্মের পরবর্তী সমস্ত সংস্করণে চলতে পারে, তবে কিছু বিচ্ছিন্ন ক্ষেত্রে ব্যতিক্রম হতে পারে, যেমন—অ্যাপ্লিকেশনটি এপিআই-এর এমন কোনো অংশ ব্যবহার করে যা পরবর্তীতে কোনো কারণে সরিয়ে ফেলা হয়।
ফরওয়ার্ড কম্প্যাটিবিলিটি গুরুত্বপূর্ণ, কারণ অনেক অ্যান্ড্রয়েড-চালিত ডিভাইস ওভার-দ্য-এয়ার (OTA) সিস্টেম আপডেট পায়। ব্যবহারকারী আপনার অ্যাপ্লিকেশনটি ইনস্টল করে সফলভাবে ব্যবহার করার পর, পরবর্তীতে অ্যান্ড্রয়েড প্ল্যাটফর্মের একটি নতুন সংস্করণে OTA আপডেট পেতে পারেন। আপডেটটি ইনস্টল হয়ে গেলে, আপনার অ্যাপ্লিকেশনটি পরিবেশের একটি নতুন রানটাইম সংস্করণে চলে, কিন্তু তাতে তখনও সেইসব API এবং সিস্টেমের সক্ষমতাগুলো থাকে যার উপর আপনার অ্যাপ্লিকেশনটি নির্ভরশীল।
এপিআই-এর নিচের পরিবর্তন, যেমন মূল সিস্টেমের পরিবর্তন, নতুন পরিবেশে আপনার অ্যাপ্লিকেশনটি চালানোর সময় সেটিকে প্রভাবিত করতে পারে। অ্যাপ্লিকেশন ডেভেলপার হিসেবে, প্রতিটি সিস্টেম পরিবেশে অ্যাপ্লিকেশনটি দেখতে কেমন হয় এবং এর আচরণ কেমন হয়, তা বোঝা আপনার জন্য গুরুত্বপূর্ণ।
অ্যান্ড্রয়েড প্ল্যাটফর্মের বিভিন্ন সংস্করণে আপনার অ্যাপ্লিকেশনটি পরীক্ষা করতে সাহায্য করার জন্য, অ্যান্ড্রয়েড এসডিকে-তে একাধিক প্ল্যাটফর্ম অন্তর্ভুক্ত রয়েছে যা আপনি ডাউনলোড করতে পারেন। প্রতিটি প্ল্যাটফর্মে একটি সামঞ্জস্যপূর্ণ সিস্টেম ইমেজ থাকে যা আপনি আপনার অ্যাপ্লিকেশনটি পরীক্ষা করার জন্য একটি এভিডি-তে চালাতে পারেন।
অ্যাপ্লিকেশনের পশ্চাৎ সামঞ্জস্যতা
অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলো যে সংস্করণের জন্য কম্পাইল করা হয়েছিল, তার চেয়ে পুরোনো অ্যান্ড্রয়েড প্ল্যাটফর্ম সংস্করণগুলোর সাথে সেগুলো অগত্যা পশ্চাৎ-সামঞ্জস্যপূর্ণ (backward-compatible) নাও হতে পারে।
অ্যান্ড্রয়েড প্ল্যাটফর্মের প্রতিটি নতুন সংস্করণে নতুন ফ্রেমওয়ার্ক এপিআই অন্তর্ভুক্ত থাকতে পারে, যেমন যেগুলো অ্যাপ্লিকেশনগুলোকে প্ল্যাটফর্মের নতুন সক্ষমতা ব্যবহারের সুযোগ দেয় অথবা বিদ্যমান এপিআই-এর অংশবিশেষ প্রতিস্থাপন করে। এপিআই লেভেল অনুযায়ী, নতুন প্ল্যাটফর্মে চলার সময় এবং প্ল্যাটফর্মের পরবর্তী সংস্করণগুলোতে চলার সময়ও অ্যাপ্লিকেশনগুলো এই নতুন এপিআইগুলো ব্যবহার করতে পারে। কিন্তু যেহেতু প্ল্যাটফর্মের পূর্ববর্তী সংস্করণগুলোতে নতুন এপিআইগুলো অন্তর্ভুক্ত থাকে না, তাই যে অ্যাপ্লিকেশনগুলো নতুন এপিআই ব্যবহার করে, সেগুলো সেই প্ল্যাটফর্মগুলোতে চলতে পারে না।
যদিও অ্যান্ড্রয়েড-চালিত কোনো ডিভাইসকে প্ল্যাটফর্মের পূর্ববর্তী সংস্করণে ডাউনগ্রেড করার সম্ভাবনা কম, তবুও এটা মনে রাখা জরুরি যে, এমন অনেক ডিভাইস থাকার সম্ভাবনা রয়েছে যেগুলো প্ল্যাটফর্মের আগের সংস্করণ ব্যবহার করে। এমনকি যেসব ডিভাইস OTA আপডেট পায়, সেগুলোর মধ্যেও কিছু ডিভাইস পিছিয়ে থাকতে পারে এবং দীর্ঘ সময় ধরে কোনো আপডেট নাও পেতে পারে।
একটি প্ল্যাটফর্ম সংস্করণ এবং এপিআই স্তর নির্বাচন করুন
আপনার অ্যাপ্লিকেশন তৈরি করার সময়, আপনি সেই প্ল্যাটফর্ম সংস্করণটি বেছে নেন যার ভিত্তিতে অ্যাপ্লিকেশনটি কম্পাইল করবেন। সাধারণত, আপনার অ্যাপ্লিকেশনটি প্ল্যাটফর্মের সর্বনিম্ন সম্ভাব্য সংস্করণের ভিত্তিতে কম্পাইল করুন, যা আপনার অ্যাপ্লিকেশনটি সমর্থন করতে পারে।
ক্রমান্বয়ে নিম্নতর বিল্ড টার্গেটের সাথে অ্যাপ্লিকেশনটি কম্পাইল করে আপনি সর্বনিম্ন সম্ভাব্য প্ল্যাটফর্ম সংস্করণ নির্ধারণ করতে পারেন। সর্বনিম্ন সংস্করণটি নির্ধারণ করার পর, সংশ্লিষ্ট প্ল্যাটফর্ম সংস্করণ এবং এপিআই লেভেল ব্যবহার করে একটি এভিডি (AVD) তৈরি করুন এবং আপনার অ্যাপ্লিকেশনটি সম্পূর্ণরূপে পরীক্ষা করুন। অ্যাপ্লিকেশনটির ম্যানিফেস্টে একটি android:minSdkVersion অ্যাট্রিবিউট ঘোষণা করতে এবং এর মান প্ল্যাটফর্ম সংস্করণের এপিআই লেভেলে সেট করতে ভুলবেন না।
সর্বনিম্ন এপিআই স্তর ঘোষণা করুন
আপনি যদি এমন কোনো অ্যাপ্লিকেশন তৈরি করেন যা প্ল্যাটফর্মের সর্বশেষ সংস্করণে প্রবর্তিত API বা সিস্টেম ফিচার ব্যবহার করে, তাহলে android:minSdkVersion অ্যাট্রিবিউটটিকে প্ল্যাটফর্মের সর্বশেষ সংস্করণের API লেভেলে সেট করুন। এর ফলে, ব্যবহারকারীরা কেবল তখনই আপনার অ্যাপ্লিকেশনটি ইনস্টল করতে পারবেন, যখন তাদের ডিভাইসগুলোতে অ্যান্ড্রয়েড প্ল্যাটফর্মের একটি সামঞ্জস্যপূর্ণ সংস্করণ চলবে। ফলস্বরূপ, এটি নিশ্চিত করতে সাহায্য করে যে আপনার অ্যাপ্লিকেশনটি তাদের ডিভাইসগুলোতে সঠিকভাবে কাজ করতে পারবে।
যদি আপনার অ্যাপ্লিকেশনটি প্ল্যাটফর্মের সর্বশেষ সংস্করণে প্রবর্তিত API ব্যবহার করে কিন্তু android:minSdkVersion অ্যাট্রিবিউটটি ঘোষণা না করে, তাহলে এটি প্ল্যাটফর্মের সর্বশেষ সংস্করণ চালিত ডিভাইসগুলিতে সঠিকভাবে চলে, কিন্তু প্ল্যাটফর্মের পূর্ববর্তী সংস্করণ চালিত ডিভাইসগুলিতে চলে না । পরবর্তী ক্ষেত্রে, অ্যাপ্লিকেশনটি রানটাইমে ক্র্যাশ করে যখন এটি এমন API ব্যবহার করার চেষ্টা করে যা পূর্ববর্তী সংস্করণগুলিতে নেই।
উচ্চতর এপিআই স্তরের বিরুদ্ধে পরীক্ষা করুন
আপনার অ্যাপ্লিকেশনটি কম্পাইল করার পর, অ্যাপ্লিকেশনটির android:minSdkVersion অ্যাট্রিবিউটে উল্লেখিত প্ল্যাটফর্মে এটি পরীক্ষা করে নিন। এটি করার জন্য, আপনার অ্যাপ্লিকেশনের প্রয়োজনীয় প্ল্যাটফর্ম সংস্করণটি ব্যবহার করে একটি AVD তৈরি করুন। এছাড়াও, ফরোয়ার্ড-কম্প্যাটিবিলিটি পরীক্ষা করার জন্য, আপনার অ্যাপ্লিকেশনের ব্যবহৃত API লেভেলের চেয়ে উচ্চতর API লেভেল ব্যবহারকারী সমস্ত প্ল্যাটফর্মে অ্যাপ্লিকেশনটি রান করে পরীক্ষা করুন।
অ্যান্ড্রয়েড এসডিকে-তে সর্বশেষ সংস্করণসহ একাধিক প্ল্যাটফর্ম সংস্করণ অন্তর্ভুক্ত রয়েছে যা আপনি ব্যবহার করতে পারেন এবং এটি একটি আপডেটার টুলও প্রদান করে, যা ব্যবহার করে প্রয়োজন অনুযায়ী অন্যান্য প্ল্যাটফর্ম সংস্করণ ডাউনলোড করা যায়।
আপডেটারটি অ্যাক্সেস করতে, <sdk>/tools ডিরেক্টরিতে অবস্থিত android কমান্ড-লাইন টুলটি ব্যবহার করুন। আপনি android sdk এক্সিকিউট করে SDK আপডেটারটি চালু করতে পারেন। এছাড়াও আপনি android.bat (উইন্ডোজ) বা android (OS X/লিনাক্স) ফাইলটিতে ডাবল-ক্লিক করতে পারেন।
এমুলেটরে বিভিন্ন প্ল্যাটফর্ম সংস্করণে আপনার অ্যাপ্লিকেশনটি চালানোর জন্য, আপনি যে প্রতিটি প্ল্যাটফর্ম সংস্করণ পরীক্ষা করতে চান তার জন্য একটি করে AVD তৈরি করুন। AVD সম্পর্কে আরও তথ্যের জন্য, ‘ভার্চুয়াল ডিভাইস তৈরি ও পরিচালনা’ দেখুন। আপনি যদি পরীক্ষার জন্য কোনো ফিজিক্যাল ডিভাইস ব্যবহার করেন, তবে নিশ্চিত করুন যে আপনি ডিভাইসটিতে চালিত অ্যান্ড্রয়েড প্ল্যাটফর্মের API লেভেল জানেন। প্ল্যাটফর্ম সংস্করণ এবং তাদের API লেভেলের তালিকার জন্য এই ডকুমেন্টের টেবিলটি দেখুন।
এপিআই লেভেল অনুযায়ী রেফারেন্স ডকুমেন্টেশন ফিল্টার করুন
অ্যান্ড্রয়েড প্ল্যাটফর্ম রেফারেন্স ডকুমেন্টেশন পেজগুলোর প্রতিটির উপরের-বাম দিকে একটি "API লেভেল" কন্ট্রোল থাকে। আপনার অ্যাপ্লিকেশনের ম্যানিফেস্ট ফাইলের android:minSdkVersion অ্যাট্রিবিউটে নির্দিষ্ট করা API লেভেলের উপর ভিত্তি করে, আপনি এই কন্ট্রোলটি ব্যবহার করে শুধুমাত্র API-এর সেই অংশগুলোর ডকুমেন্টেশন দেখাতে পারেন, যেগুলো আপনার অ্যাপ্লিকেশনের জন্য প্রকৃতপক্ষে অ্যাক্সেসযোগ্য।
ফিল্টারিং ব্যবহার করতে, মেনু থেকে আপনার অ্যাপ্লিকেশন দ্বারা নির্দিষ্ট API লেভেলটি নির্বাচন করুন। পরবর্তী API লেভেলে প্রবর্তিত API-গুলো তখন ধূসর হয়ে যায় এবং তাদের বিষয়বস্তু আবৃত থাকে, কারণ সেগুলি আপনার অ্যাপ্লিকেশনের জন্য অ্যাক্সেসযোগ্য নয়।
ডকুমেন্টেশনে এপিআই লেভেল অনুযায়ী ফিল্টার করলে প্রতিটি এপিআই লেভেলে নতুন কী এসেছে বা যোগ করা হয়েছে, তা দেখা যায় না। এটি একটি নির্দিষ্ট এপিআই লেভেলের সাথে সম্পর্কিত সম্পূর্ণ এপিআই দেখার একটি উপায় প্রদান করে, যেখানে পরবর্তী এপিআই লেভেলগুলোতে প্রবর্তিত এপিআই উপাদানগুলো বাদ দেওয়া হয়।
সম্পূর্ণ ডকুমেন্টেশন দেখতে ফিরে যেতে, এপিআই লেভেল মেনুর শীর্ষে থাকা REL নির্বাচন করুন। ডিফল্টরূপে, এপিআই লেভেল ফিল্টারিং নিষ্ক্রিয় থাকে, যাতে আপনি এপিআই লেভেল নির্বিশেষে সম্পূর্ণ ফ্রেমওয়ার্ক এপিআই দেখতে পারেন।
প্রতিটি এপিআই উপাদানের রেফারেন্স ডকুমেন্টেশনে উল্লেখ করা থাকে যে, কোন এপিআই লেভেলে উপাদানটি অন্তর্ভুক্ত করা হয়েছে। প্যাকেজ এবং ক্লাসের এপিআই লেভেল প্রতিটি ডকুমেন্টেশন পৃষ্ঠার কন্টেন্ট এরিয়ার উপরের ডান কোণায় "Added in API level" হিসেবে নির্দিষ্ট করা থাকে। ক্লাস মেম্বারদের এপিআই লেভেল তাদের বিস্তারিত বিবরণের হেডারে, ডান মার্জিনে নির্দিষ্ট করা থাকে।