प्लैटफ़ॉर्म आर्किटेक्चर

Android, Linux पर आधारित एक ओपन सोर्स सॉफ़्टवेयर स्टैक है. इसे कई तरह के डिवाइसों और फ़ॉर्म फ़ैक्टर के लिए बनाया गया है. पहली इमेज में, Android प्लैटफ़ॉर्म के मुख्य कॉम्पोनेंट दिखाए गए हैं.

Android सॉफ़्टवेयर स्टैक

पहली इमेज. Android सॉफ़्टवेयर स्टैक.

Linux कर्नेल

Android प्लैटफ़ॉर्म की नींव Linux कर्नेल है. उदाहरण के लिए, Android Runtime (ART), थ्रेडिंग और लो-लेवल मेमोरी मैनेजमेंट जैसी बुनियादी सुविधाओं के लिए Linux कर्नल पर निर्भर करता है.

Linux कर्नल का इस्तेमाल करने से, Android को सुरक्षा से जुड़ी मुख्य सुविधाओं का फ़ायदा मिलता है. साथ ही, डिवाइस बनाने वाली कंपनियां, जाने-माने कर्नल के लिए हार्डवेयर ड्राइवर बना पाती हैं.

हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल)

हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल) स्टैंडर्ड इंटरफ़ेस उपलब्ध कराती है. ये इंटरफ़ेस, डिवाइस के हार्डवेयर की क्षमताओं को Java API फ़्रेमवर्क के लिए उपलब्ध कराते हैं. एचएएल में कई लाइब्रेरी मॉड्यूल होते हैं. इनमें से हर मॉड्यूल, किसी खास तरह के हार्डवेयर कॉम्पोनेंट के लिए इंटरफ़ेस लागू करता है. जैसे, कैमरा या ब्लूटूथ मॉड्यूल. जब कोई फ़्रेमवर्क एपीआई, डिवाइस के हार्डवेयर को ऐक्सेस करने के लिए कॉल करता है, तो Android सिस्टम उस हार्डवेयर कॉम्पोनेंट के लिए लाइब्रेरी मॉड्यूल लोड करता है.

Android रनटाइम

Android 5.0 (एपीआई लेवल 21) या इसके बाद के वर्शन पर चलने वाले डिवाइसों के लिए, हर ऐप्लिकेशन अपनी प्रोसेस में चलता है. साथ ही, Android Runtime (ART) के अपने इंस्टेंस के साथ चलता है. ART को इस तरह से लिखा गया है कि यह कम मेमोरी वाले डिवाइसों पर कई वर्चुअल मशीनें चला सके. इसके लिए, यह Dalvik Executable फ़ॉर्मैट (DEX) फ़ाइलें चलाता है. यह एक बाइटकोड फ़ॉर्मैट है, जिसे खास तौर पर Android के लिए डिज़ाइन किया गया है. इसे कम से कम मेमोरी इस्तेमाल करने के लिए ऑप्टिमाइज़ किया गया है. बिल्ड टूल, जैसे कि d8, Java सोर्स को DEX बाइटकोड में कंपाइल करते हैं. यह Android प्लैटफ़ॉर्म पर चल सकता है.

एआरटी की कुछ मुख्य सुविधाएं यहां दी गई हैं:

  • ऐड-ऑफ-टाइम (एओटी) और जस्ट-इन-टाइम (जेआईटी) कंपाइलेशन
  • ऑप्टिमाइज़ किया गया गार्बेज कलेक्शन (GC)
  • Android 9 (एपीआई लेवल 28) और इसके बाद के वर्शन पर, ऐप्लिकेशन पैकेज की DEX फ़ाइलों को ज़्यादा कंपैक्ट मशीन कोड में कन्वर्ट करना
  • डीबग करने की बेहतर सुविधा. इसमें ये शामिल हैं: सैंपलिंग प्रोफ़ाइलर, गड़बड़ी और क्रैश की रिपोर्टिंग के बारे में ज़्यादा जानकारी, और खास फ़ील्ड की निगरानी करने के लिए वॉचपॉइंट सेट करने की सुविधा

Android 5.0 (एपीआई लेवल 21) से पहले, Dalvik, Android रनटाइम था. अगर आपका ऐप्लिकेशन एआरटी पर अच्छी तरह से काम करता है, तो वह डेलविक पर भी काम कर सकता है. हालांकि, इसका उल्टा सही नहीं हो सकता.

Android में कोर रनटाइम लाइब्रेरी का एक सेट भी शामिल होता है. यह Java प्रोग्रामिंग लैंग्वेज की ज़्यादातर सुविधाएं उपलब्ध कराता है. इनमें Java 8 लैंग्वेज की कुछ सुविधाएं भी शामिल हैं. इनका इस्तेमाल Java API फ़्रेमवर्क करता है.

नेटिव C/C++ लाइब्रेरी

Android सिस्टम के कई मुख्य कॉम्पोनेंट और सेवाएं, जैसे कि एआरटी और एचएएल, नेटिव कोड से बनाई जाती हैं. इसके लिए, C और C++ में लिखी गई नेटिव लाइब्रेरी की ज़रूरत होती है. Android प्लैटफ़ॉर्म, Java फ़्रेमवर्क एपीआई उपलब्ध कराता है, ताकि इन नेटिव लाइब्रेरी की सुविधाओं को ऐप्लिकेशन के लिए उपलब्ध कराया जा सके. उदाहरण के लिए, अपने ऐप्लिकेशन में 2D और 3D ग्राफ़िक बनाने और उनमें बदलाव करने की सुविधा जोड़ने के लिए, Android फ़्रेमवर्क के Java OpenGL API के ज़रिए OpenGL ES को ऐक्सेस किया जा सकता है.

अगर आपको ऐसा ऐप्लिकेशन बनाना है जिसमें C या C++ कोड की ज़रूरत है, तो Android NDK का इस्तेमाल किया जा सकता है. इससे, नेटिव प्लैटफ़ॉर्म की कुछ लाइब्रेरी को सीधे अपने नेटिव कोड से ऐक्सेस किया जा सकता है.

Java API फ़्रेमवर्क

Android OS की सभी सुविधाएँ, Java भाषा में लिखे गए एपीआई के ज़रिए उपलब्ध होती हैं. ये एपीआई, बिल्डिंग ब्लॉक बनाते हैं. इनकी मदद से, Android ऐप्लिकेशन बनाए जा सकते हैं. ये एपीआई, मुख्य और मॉड्यूलर सिस्टम कॉम्पोनेंट और सेवाओं को फिर से इस्तेमाल करने की प्रोसेस को आसान बनाते हैं. इनमें ये शामिल हैं:

  • यह एक बेहतर और एक्सटेंसिबल व्यू सिस्टम है. इसका इस्तेमाल करके, ऐप्लिकेशन का यूज़र इंटरफ़ेस (यूआई) बनाया जा सकता है. इसमें सूचियां, ग्रिड, टेक्स्ट बॉक्स, बटन, और यहां तक कि एम्बेड किया जा सकने वाला वेब ब्राउज़र भी शामिल है
  • संसाधन मैनेजर, जो बिना कोड वाले संसाधनों का ऐक्सेस देता है. जैसे, स्थानीय भाषा में स्ट्रिंग, ग्राफ़िक, और लेआउट फ़ाइलें
  • सूचना मैनेजर, जो सभी ऐप्लिकेशन को स्टेटस बार में कस्टम सूचनाएं दिखाने की अनुमति देता है
  • एक ऐक्टिविटी मैनेजर, जो ऐप्लिकेशन की लाइफ़साइकल को मैनेज करता है और एक सामान्य नेविगेशन बैक स्टैक उपलब्ध कराता है
  • कॉन्टेंट उपलब्ध कराने वाली ऐसी कंपनियां जो ऐप्लिकेशन को अन्य ऐप्लिकेशन से डेटा ऐक्सेस करने की अनुमति देती हैं. जैसे, Contacts ऐप्लिकेशन या अपना डेटा शेयर करने की अनुमति देती हैं

डेवलपर के पास, उन्हीं फ़्रेमवर्क एपीआई का पूरा ऐक्सेस होता है जिनका इस्तेमाल Android सिस्टम ऐप्लिकेशन करते हैं.

सिस्टम ऐप्लिकेशन

Android में ईमेल, एसएमएस मैसेज, कैलेंडर, इंटरनेट ब्राउज़िंग, संपर्क वगैरह के लिए, कोर ऐप्लिकेशन का एक सेट होता है. प्लेटफ़ॉर्म के साथ शामिल किए गए ऐप्लिकेशन को, उपयोगकर्ता के चुने गए ऐप्लिकेशन में कोई खास स्टेटस नहीं मिलता. इसलिए, तीसरे पक्ष का कोई ऐप्लिकेशन, उपयोगकर्ता का डिफ़ॉल्ट वेब ब्राउज़र, एसएमएस मैसेंजर या यहां तक कि डिफ़ॉल्ट कीबोर्ड भी बन सकता है. हालांकि, कुछ मामलों में ऐसा नहीं होता. जैसे, सिस्टम का सेटिंग ऐप्लिकेशन.

सिस्टम ऐप्लिकेशन, लोगों के लिए ऐप्लिकेशन के तौर पर काम करते हैं. साथ ही, ये ऐसी मुख्य सुविधाएं उपलब्ध कराते हैं जिन्हें डेवलपर अपने ऐप्लिकेशन से ऐक्सेस कर सकते हैं. उदाहरण के लिए, अगर आपको अपने ऐप्लिकेशन से मैसेज (एसएमएस) भेजने की सुविधा देनी है, तो आपको यह सुविधा खुद नहीं बनानी पड़ेगी. इसके बजाय, पहले से इंस्टॉल किए गए किसी भी मैसेज ऐप्लिकेशन को कॉल करके, मैसेज को उस व्यक्ति तक पहुंचाया जा सकता है जिसे आपने चुना है.