Android Open Source Project (AOSP), Android का सोर्स कोड है. यह सार्वजनिक तौर पर उपलब्ध है और इसमें बदलाव किया जा सकता है. कोई भी व्यक्ति अपने डिवाइस के लिए 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 API को दिखाता है. ये सिर्फ़ पार्टनर और 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 की किसी खास लेयर के बारे में ज़्यादा जानना है, तो बाईं ओर मौजूद नेविगेशन में सेक्शन के नाम पर क्लिक करें. इसके बाद, उस सेक्शन की खास जानकारी देखें.