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