Android ओपन सोर्स प्रोजेक्ट (AOSP) सार्वजनिक रूप से उपलब्ध है और उसमें बदलाव किया जा सकता है. कोई भी व्यक्ति अपने डिवाइस के लिए AOSP को डाउनलोड और उसमें बदलाव कर सकता है. AOSP, Android मोबाइल प्लैटफ़ॉर्म को पूरी तरह से लागू करता है और यह पूरी तरह से काम करता है.
AOSP को लागू करने वाले डिवाइसों के लिए, काम करने के दो लेवल हैं: AOSP के साथ काम करने की सुविधा और Android के साथ काम करने की सुविधा. AOSP के साथ काम करने वाला डिवाइस, कंपैटबिलिटी डेफ़िनिशन डॉक्यूमेंट (सीडीडी) में दी गई ज़रूरी शर्तों के मुताबिक होना चाहिए. Android के साथ काम करने वाले डिवाइस को सीडीडी और वेंडर सॉफ़्टवेयर की ज़रूरी शर्तों (वीएसआर) में दी गई ज़रूरी शर्तों के मुताबिक होना चाहिए. साथ ही, वेंडर टेस्ट सुइट (वीटीएस) और कंपैटिबिलिटी टेस्ट सुइट (सीटीएस) जैसी जांचों को पूरा करना चाहिए. Android के साथ काम करने के बारे में ज़्यादा जानकारी के लिए, Android Compatibility Program देखें.
AOSP आर्किटेक्चर
AOSP के सॉफ़्टवेयर स्टैक में ये लेयर शामिल हैं:
पहला डायग्राम. AOSP सॉफ़्टवेयर स्टैक का आर्किटेक्चर.
पहली इमेज में इस्तेमाल किए गए शब्दों की परिभाषाएं यहां दी गई हैं:
- Android ऐप्लिकेशन
- ऐसा ऐप्लिकेशन जिसे सिर्फ़ Android API का इस्तेमाल करके बनाया गया हो. Android ऐप्लिकेशन ढूंढने और डाउनलोड करने के लिए, Google Play Store का ज़्यादातर इस्तेमाल किया जाता है. हालांकि, इसके अलावा भी कई अन्य विकल्प उपलब्ध हैं. कुछ मामलों में, हो सकता है कि डिवाइस निर्माता अपने डिवाइस के मुख्य फ़ंक्शन को सपोर्ट करने के लिए कोई Android ऐप्लिकेशन पहले से इंस्टॉल करना चाहे. अगर आपकी दिलचस्पी Android ऐप्लिकेशन बनाने में है, तो developers.android.com देखें.
- ऐप्लिकेशन को खास सुविधाएं देने की अनुमति
- Android और सिस्टम एपीआई के कॉम्बिनेशन का इस्तेमाल करके बनाया गया ऐप्लिकेशन. ये ऐप्लिकेशन, डिवाइस पर पहले से इंस्टॉल किए गए ऐप्लिकेशन के तौर पर उपलब्ध होने चाहिए.
- डिवाइस बनाने वाली कंपनी का ऐप्लिकेशन
- ऐसा ऐप्लिकेशन जिसे Android API, सिस्टम एपीआई, और Android फ़्रेमवर्क को लागू करने के लिए सीधे ऐक्सेस के कॉम्बिनेशन का इस्तेमाल करके बनाया गया हो. डिवाइस बनाने वाली कंपनी, Android फ़्रेमवर्क में मौजूद अस्थिर एपीआई को सीधे तौर पर ऐक्सेस कर सकती है. इसलिए, इन ऐप्लिकेशन को डिवाइस में पहले से इंस्टॉल किया जाना चाहिए. साथ ही, इन्हें सिर्फ़ तब अपडेट किया जा सकता है, जब डिवाइस का सिस्टम सॉफ़्टवेयर अपडेट हो.
- System API
- System API, Android के उन एपीआई को दिखाता है जो सिर्फ़ पार्टनर और OEM के लिए उपलब्ध होते हैं. इन एपीआई को बंडल किए गए ऐप्लिकेशन में शामिल किया जाता है. इन एपीआई को सोर्स कोड में @SystemApi के तौर पर मार्क किया गया है.
- Android API
- Android API, तीसरे पक्ष के Android ऐप्लिकेशन डेवलपर के लिए सार्वजनिक तौर पर उपलब्ध एपीआई है. Android API के बारे में जानकारी पाने के लिए, Android API का रेफ़रंस देखें.
- Android फ़्रेमवर्क
- Java क्लास, इंटरफ़ेस, और पहले से कंपाइल किए गए अन्य कोड का ग्रुप, जिस पर ऐप्लिकेशन बनाए जाते हैं. Android API का इस्तेमाल करके, फ़्रेमवर्क के कुछ हिस्सों को सार्वजनिक तौर पर ऐक्सेस किया जा सकता है. फ़्रेमवर्क के अन्य हिस्से, सिस्टम एपीआई का इस्तेमाल करके सिर्फ़ OEM के लिए उपलब्ध हैं. Android फ़्रेमवर्क कोड, ऐप्लिकेशन की प्रोसेस में चलता है.
- सिस्टम से जुड़ी सेवाएं
- सिस्टम सेवाएं, मॉड्यूलर और फ़ोकस किए गए कॉम्पोनेंट होती हैं. जैसे,
system_server
, SurfaceFlinger, और MediaService. Android फ़्रेमवर्क एपीआई से एक्सपोज़ की गई सुविधा, डिवाइस में मौजूद हार्डवेयर को ऐक्सेस करने के लिए, सिस्टम की सेवाओं से संपर्क करती है. - Android रनटाइम (ART)
- AOSP से मिला Java रनटाइम एनवायरमेंट. ART, प्रोसेसर के हिसाब से दिए गए निर्देशों के मुताबिक ऐप्लिकेशन के बाइट कोड का अनुवाद करता है, जो डिवाइस के रनटाइम एनवायरमेंट की मदद से लागू किए जाते हैं.
- हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल)
- एचएएल, एक ऐब्स्ट्रैक्शन लेयर है. इसमें हार्डवेयर वेंडर के लिए, स्टैंडर्ड इंटरफ़ेस लागू करने की सुविधा होती है. एचएएल की मदद से, Android को ड्राइवर के निचले लेवल के लागू होने के बारे में जानकारी नहीं चाहिए. एचएएल का इस्तेमाल करके, किसी सुविधा को लागू किया जा सकता है. ऐसा करने पर, हाई लेवल सिस्टम पर कोई असर नहीं पड़ता या उसमें बदलाव नहीं होता. ज़्यादा जानकारी के लिए, एचएएल की खास जानकारी देखें.
- नेटिव डेमन और लाइब्रेरी
इस लेयर के नेटिव डीमन में
init
,healthd
,logd
, औरstoraged
शामिल हैं. ये डेमन सीधे कर्नेल या अन्य इंटरफ़ेस के साथ इंटरैक्ट करते हैं और ये यूज़रस्पेस पर आधारित एचएएल के लागू होने पर निर्भर नहीं होते.इस लेयर की नेटिव लाइब्रेरी में
libc
,liblog
,libutils
,libbinder
, औरlibselinux
शामिल हैं. ये नेटिव लाइब्रेरी, सीधे कर्नेल या अन्य इंटरफ़ेस के साथ इंटरैक्ट करती हैं. साथ ही, ये उपयोगकर्ता-स्पेस पर आधारित एचएएल के लागू होने पर निर्भर नहीं करती हैं.- कर्नल
किसी भी ऑपरेटिंग सिस्टम का मुख्य हिस्सा कोर है. यह डिवाइस के अंदर मौजूद हार्डवेयर से बात करता है. जहां भी हो सके, AOSP कर्नेल को हार्डवेयर के हिसाब से काम करने वाले मॉड्यूल और वेंडर के हिसाब से काम करने वाले मॉड्यूल में बांटा जाता है. AOSP के कर्नेल कॉम्पोनेंट के बारे में जानकारी पाने के लिए, कर्नेल की खास जानकारी देखें. इसमें, कॉम्पोनेंट की परिभाषाएं भी शामिल हैं.
आगे क्या करना है?
- अगर आपने पहले कभी AOSP का इस्तेमाल नहीं किया है और आपको डेवलपमेंट शुरू करना है, तो शुरू करने के लिए सेक्शन देखें.
- अगर आपको AOSP की किसी खास लेयर के बारे में ज़्यादा जानना है, तो बाईं ओर मौजूद नेविगेशन में सेक्शन के नाम पर क्लिक करें. इसके बाद, उस सेक्शन की खास जानकारी देखें.