অ্যান্ড্রয়েড হল একটি ওপেন সোর্স, লিনাক্স-ভিত্তিক সফ্টওয়্যার স্ট্যাক যা বিভিন্ন ডিভাইস এবং ফর্ম ফ্যাক্টরের জন্য তৈরি করা হয়েছে। চিত্র 1 অ্যান্ড্রয়েড প্ল্যাটফর্মের প্রধান উপাদানগুলি দেখায়৷
লিনাক্স কার্নেল
অ্যান্ড্রয়েড প্ল্যাটফর্মের ভিত্তি হল লিনাক্স কার্নেল। উদাহরণস্বরূপ, অ্যান্ড্রয়েড রানটাইম (এআরটি) থ্রেডিং এবং নিম্ন-স্তরের মেমরি পরিচালনার মতো অন্তর্নিহিত কার্যকারিতার জন্য লিনাক্স কার্নেলের উপর নির্ভর করে।
একটি লিনাক্স কার্নেল ব্যবহার করে অ্যান্ড্রয়েডকে মূল নিরাপত্তা বৈশিষ্ট্যগুলির সুবিধা নিতে দেয় এবং ডিভাইস নির্মাতাদের একটি সুপরিচিত কার্নেলের জন্য হার্ডওয়্যার ড্রাইভার বিকাশ করতে দেয়।
হার্ডওয়্যার বিমূর্তকরণ স্তর (HAL)
হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) স্ট্যান্ডার্ড ইন্টারফেস প্রদান করে যা উচ্চ-স্তরের জাভা API ফ্রেমওয়ার্কে ডিভাইসের হার্ডওয়্যার ক্ষমতা প্রকাশ করে। এইচএএল একাধিক লাইব্রেরি মডিউল নিয়ে গঠিত, যার প্রতিটি একটি নির্দিষ্ট ধরণের হার্ডওয়্যার উপাদানের জন্য একটি ইন্টারফেস প্রয়োগ করে, যেমন ক্যামেরা বা ব্লুটুথ মডিউল। যখন একটি ফ্রেমওয়ার্ক API ডিভাইস হার্ডওয়্যার অ্যাক্সেস করার জন্য একটি কল করে, তখন Android সিস্টেম সেই হার্ডওয়্যার উপাদানটির জন্য লাইব্রেরি মডিউল লোড করে।
অ্যান্ড্রয়েড রানটাইম
Android সংস্করণ 5.0 (API স্তর 21) বা উচ্চতর চলমান ডিভাইসগুলির জন্য, প্রতিটি অ্যাপ তার নিজস্ব প্রক্রিয়ায় এবং Android রানটাইম (ART) এর নিজস্ব দৃষ্টান্তের সাথে চলে। ডালভিক এক্সিকিউটেবল ফরম্যাট (DEX) ফাইলগুলি সম্পাদন করে কম-মেমরির ডিভাইসে একাধিক ভার্চুয়াল মেশিন চালানোর জন্য ART লেখা হয়েছে, একটি বাইটেকড ফর্ম্যাট যা বিশেষভাবে অ্যান্ড্রয়েডের জন্য ডিজাইন করা হয়েছে যা একটি ন্যূনতম মেমরি ফুটপ্রিন্টের জন্য অপ্টিমাইজ করা হয়েছে। বিল্ড টুলস, যেমন d8
, জাভা সোর্সকে DEX বাইটকোডে কম্পাইল করে, যা অ্যান্ড্রয়েড প্ল্যাটফর্মে চলতে পারে।
ART এর কিছু প্রধান বৈশিষ্ট্যগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
- এহেড-অফ-টাইম (AOT) এবং জাস্ট-ইন-টাইম (JIT) সংকলন
- অপ্টিমাইজ করা আবর্জনা সংগ্রহ (GC)
- অ্যান্ড্রয়েড 9 (এপিআই স্তর 28) এবং উচ্চতর, একটি অ্যাপ প্যাকেজের DEX ফাইলগুলিকে আরও কমপ্যাক্ট মেশিন কোডে রূপান্তর করা
- একটি ডেডিকেটেড স্যাম্পলিং প্রোফাইলার, বিস্তারিত ডায়াগনস্টিক ব্যতিক্রম এবং ক্র্যাশ রিপোর্টিং এবং নির্দিষ্ট ক্ষেত্রগুলি নিরীক্ষণের জন্য ওয়াচপয়েন্ট সেট করার ক্ষমতা সহ আরও ভাল ডিবাগিং সমর্থন
অ্যান্ড্রয়েড সংস্করণ 5.0 (এপিআই স্তর 21) এর আগে, ডালভিক অ্যান্ড্রয়েড রানটাইম ছিল। যদি আপনার অ্যাপটি এআরটি-তে ভালভাবে চলে, তবে এটি ডালভিকেও কাজ করতে পারে, তবে বিপরীতটি সত্য নাও হতে পারে ।
অ্যান্ড্রয়েডে মূল রানটাইম লাইব্রেরির একটি সেটও রয়েছে যা জাভা প্রোগ্রামিং ভাষার বেশিরভাগ কার্যকারিতা প্রদান করে, যার মধ্যে কিছু Java 8 ভাষা বৈশিষ্ট্য রয়েছে যা Java API ফ্রেমওয়ার্ক ব্যবহার করে।
নেটিভ C/C++ লাইব্রেরি
অনেক মূল অ্যান্ড্রয়েড সিস্টেমের উপাদান এবং পরিষেবা, যেমন ART এবং HAL, নেটিভ কোড থেকে তৈরি করা হয়েছে যার জন্য C এবং C++ এ লেখা নেটিভ লাইব্রেরি প্রয়োজন। অ্যান্ড্রয়েড প্ল্যাটফর্ম জাভা ফ্রেমওয়ার্ক এপিআই সরবরাহ করে যা অ্যাপগুলিতে এই নেটিভ লাইব্রেরির কার্যকারিতা প্রকাশ করতে। উদাহরণস্বরূপ, আপনি আপনার অ্যাপে 2D এবং 3D গ্রাফিক্স অঙ্কন এবং ম্যানিপুলেট করার জন্য সমর্থন যোগ করতে Android ফ্রেমওয়ার্কের Java OpenGL API-এর মাধ্যমে OpenGL ES অ্যাক্সেস করতে পারেন।
আপনি যদি এমন একটি অ্যাপ তৈরি করেন যার জন্য C বা C++ কোডের প্রয়োজন হয়, তাহলে আপনি সরাসরি আপনার নেটিভ কোড থেকে এই নেটিভ প্ল্যাটফর্ম লাইব্রেরিগুলির কিছু অ্যাক্সেস করতে Android NDK ব্যবহার করতে পারেন।
জাভা API ফ্রেমওয়ার্ক
Android OS-এর সম্পূর্ণ বৈশিষ্ট্য-সেট জাভা ভাষায় লেখা API-এর মাধ্যমে আপনার কাছে উপলব্ধ। এই APIগুলি মূল, মডুলার সিস্টেম উপাদান এবং পরিষেবাগুলির পুনঃব্যবহারকে সহজ করে Android অ্যাপ তৈরি করার জন্য প্রয়োজনীয় বিল্ডিং ব্লকগুলি গঠন করে, যার মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
- একটি সমৃদ্ধ এবং এক্সটেনসিবল ভিউ সিস্টেম যা আপনি তালিকা, গ্রিড, টেক্সট বক্স, বোতাম এবং এমনকি একটি এমবেডযোগ্য ওয়েব ব্রাউজার সহ একটি অ্যাপের UI তৈরি করতে ব্যবহার করতে পারেন
- একটি রিসোর্স ম্যানেজার , নন-কোড রিসোর্স যেমন স্থানীয় স্ট্রিং, গ্রাফিক্স এবং লেআউট ফাইলগুলিতে অ্যাক্সেস প্রদান করে
- একটি বিজ্ঞপ্তি ম্যানেজার যা সমস্ত অ্যাপকে স্ট্যাটাস বারে কাস্টম সতর্কতা প্রদর্শন করতে সক্ষম করে
- একটি অ্যাক্টিভিটি ম্যানেজার যা অ্যাপের জীবনচক্র পরিচালনা করে এবং একটি সাধারণ নেভিগেশন ব্যাক স্ট্যাক প্রদান করে
- বিষয়বস্তু প্রদানকারীরা যে অ্যাপগুলিকে অন্য অ্যাপ থেকে ডেটা অ্যাক্সেস করতে সক্ষম করে, যেমন পরিচিতি অ্যাপ, বা তাদের নিজস্ব ডেটা শেয়ার করতে
ডেভেলপারদের একই ফ্রেমওয়ার্ক API গুলিতে সম্পূর্ণ অ্যাক্সেস রয়েছে যা Android সিস্টেম অ্যাপগুলি ব্যবহার করে৷
সিস্টেম অ্যাপস
অ্যান্ড্রয়েড ইমেল, এসএমএস মেসেজিং, ক্যালেন্ডার, ইন্টারনেট ব্রাউজিং, পরিচিতি এবং আরও অনেক কিছুর জন্য মূল অ্যাপের একটি সেট নিয়ে আসে। প্ল্যাটফর্মের সাথে অন্তর্ভুক্ত অ্যাপগুলির কোনও বিশেষ মর্যাদা নেই ব্যবহারকারীরা ইনস্টল করার জন্য বেছে নেওয়া অ্যাপগুলির মধ্যে। সুতরাং, একটি তৃতীয় পক্ষের অ্যাপ ব্যবহারকারীর ডিফল্ট ওয়েব ব্রাউজার, এসএমএস মেসেঞ্জার বা এমনকি ডিফল্ট কীবোর্ড হয়ে উঠতে পারে। কিছু ব্যতিক্রম প্রযোজ্য, যেমন সিস্টেমের সেটিংস অ্যাপ।
সিস্টেম অ্যাপ্লিকেশানগুলি ব্যবহারকারীদের জন্য অ্যাপ্লিকেশান হিসাবে এবং বিকাশকারীরা তাদের নিজস্ব অ্যাপ থেকে অ্যাক্সেস করতে পারে এমন মূল ক্ষমতা প্রদান করতে উভয়ই কাজ করে৷ উদাহরণস্বরূপ, আপনি যদি চান যে আপনার অ্যাপটি এসএমএস বার্তা প্রদান করুক, তাহলে আপনাকে সেই কার্যকারিতা নিজে তৈরি করতে হবে না। আপনি এর পরিবর্তে আপনার নির্দিষ্ট করা প্রাপকের কাছে একটি বার্তা সরবরাহ করার জন্য যে কোনো SMS অ্যাপ ইতিমধ্যেই ইনস্টল করা আছে তা ব্যবহার করতে পারেন।