VNDK एक्सटेंशन

एंड्रॉइड डिवाइस निर्माता विभिन्न कारणों से एओएसपी पुस्तकालयों के स्रोत कोड को बदलते हैं। कुछ विक्रेताओं ने प्रदर्शन को बढ़ावा देने के लिए AOSP पुस्तकालयों में कार्यों को फिर से लागू किया, जबकि अन्य विक्रेताओं ने AOSP पुस्तकालयों में नए हुक, नए एपीआई या नई कार्यक्षमताएं जोड़ीं। यह खंड AOSP पुस्तकालयों को एक तरह से विस्तारित करने के लिए दिशानिर्देश प्रदान करता है जो CTS / VTS को नहीं तोड़ते हैं।

ड्रॉप-इन प्रतिस्थापन

सभी संशोधित साझा पुस्तकालय अपने एओएसपी समकक्ष के द्विआधारी-संगत , ड्रॉप-इन प्रतिस्थापन होने चाहिए। सभी मौजूदा AOSP उपयोगकर्ताओं को बिना पुनर्नवीनीकरण के संशोधित पुस्तकालय का उपयोग करने में सक्षम होना चाहिए। यह आवश्यकता निम्नलिखित है:

  • AOSP फ़ंक्शंस को हटाया नहीं जाना चाहिए।
  • यदि ऐसी संरचनाएं अपने उपयोगकर्ताओं के सामने आती हैं, तो संरचनाओं को परिवर्तित नहीं किया जाना चाहिए।
  • कार्यों की पूर्व स्थिति को मजबूत नहीं किया जाना चाहिए।
  • फंक्शंस को समकक्ष फंक्शंस प्रदान करना चाहिए।
  • कार्यों की स्थिति को कमजोर नहीं किया जाना चाहिए।

विस्तारित मॉड्यूल वर्गीकरण

परिभाषित किए गए कार्यों और उपयोग द्वारा मॉड्यूल को वर्गीकृत करें

नोट : कार्य एपीआई / एबीआई के बजाय यहां उपयोग किया जाता है क्योंकि किसी भी एपीआई / एबीआई को बदले बिना कार्यक्षमता को जोड़ना संभव है।

मॉड्यूल में परिभाषित कार्यात्मकताओं के आधार पर, मॉड्यूल को DA-मॉड्यूल और DX- मॉड्यूल में वर्गीकृत किया जा सकता है:

  • परिभाषित-केवल-एओएसपी मॉड्यूल (डीए-मॉड्यूल) नई कार्यक्षमता को परिभाषित नहीं करते हैं जो एओएसपी समकक्ष में नहीं थे।
    • उदाहरण 1. एक अक्षुण्ण अनमॉडिफाइड AOSP लाइब्रेरी एक DA-मॉड्यूल है।
    • उदाहरण 2. यदि कोई विक्रेता SIMD निर्देशों (नए कार्यों को जोड़े बिना) के साथ libcrypto.so में कार्यों को फिर से libcrypto.so , तो संशोधित libcrypto.so एक DA-मॉड्यूल होगा।
  • परिभाषित-विस्तार मॉड्यूल (डीएक्स-मॉड्यूल) या तो नई कार्यक्षमता को परिभाषित करता है या एओएसपी समकक्ष नहीं होता है।
    • उदाहरण 1. यदि कोई विक्रेता कुछ आंतरिक डेटा तक पहुंचने के लिए libjpeg.so एक सहायक फ़ंक्शन जोड़ता है, तो संशोधित libjpeg.so एक DX-Lib होगा और नया जोड़ा गया कार्य लाइब्रेरी का विस्तारित भाग होगा।
    • उदाहरण 2. यदि कोई विक्रेता libfoo.so नामक libfoo.so AOSP लाइब्रेरी को परिभाषित करता है, तो libfoo.so एक DX-Lib होगा।

मॉड्यूल द्वारा उपयोग की जाने वाली कार्यक्षमता के आधार पर, मॉड्यूल को यूए-मॉड्यूल और यूएक्स-मॉड्यूल में वर्गीकृत किया जा सकता है।

  • केवल-एओएसपी मॉड्यूल (यूए-मॉड्यूल) का उपयोग केवल एओएसपी कार्यात्मकताओं को उनके कार्यान्वयन में उपयोग करता है। वे किसी भी गैर-एओएसपी एक्सटेंशन पर भरोसा नहीं करते हैं।
    • उदाहरण 1. एक अक्षुण्ण असम्बद्ध AOSP पुस्तकालय एक UA- मॉड्यूल है।
    • उदाहरण 2. यदि एक संशोधित साझा लाइब्रेरी libjpeg.so केवल अन्य एओएसपी एपीआई पर निर्भर करता है, तो यह यूए-मॉड्यूल होगा।
  • उपयोग-विस्तार मॉड्यूल (यूएक्स-मॉड्यूल) उनके कार्यान्वयन में कुछ गैर-एओएसपी कार्यात्मकताओं पर भरोसा करते हैं।
    • उदाहरण 1. यदि एक संशोधित libjpeg.so एक अन्य गैर-AOSP लाइब्रेरी पर निर्भर करता है जिसका नाम libjpeg_turbo2.so , तो संशोधित libjpeg.so एक UX- मॉड्यूल होगा।
    • उदाहरण 2. एक विक्रेता ने अपनी संशोधित करने के लिए एक नया कार्य जोड़ता है, तो libexif.so और उनके संशोधित libjpeg.so से नए जोड़े समारोह का उपयोग करता है libexif.so , तो उनके संशोधित libjpeg.so एक UX-मॉड्यूल हो जाएगा।

परिभाषाएँ और उपयोग एक-दूसरे से स्वतंत्र हैं:

प्रयुक्त कार्य
केवल AOSP (UA) विस्तारित (UX)
परिभाषित कार्य केवल AOSP (DA) DAUA DAUX
विस्तारित (DX) डीएक्सयूए डीएक्सयूएक्स

VNDK विस्तार तंत्र

विस्तारित कार्यक्षमता पर भरोसा करने वाले विक्रेता मॉड्यूल काम नहीं करेंगे क्योंकि AOSP लाइब्रेरी में समान नाम की विस्तारित कार्यक्षमता नहीं है। यदि विक्रेता मॉड्यूल प्रत्यक्ष या अप्रत्यक्ष रूप से विस्तारित कार्यक्षमता पर निर्भर करते हैं, तो विक्रेताओं को विक्रेता विभाजन के लिए DAUX, DXUA, और DXUX को साझा पुस्तकालयों को कॉपी करना चाहिए (विक्रेता प्रक्रियाएं हमेशा विक्रेता विभाजन में साझा पुस्तकालयों की तलाश करती हैं)। हालांकि, एलएल-एनडीके पुस्तकालयों की नकल नहीं की जानी चाहिए, इसलिए विक्रेता मॉड्यूल को संशोधित एलएल-एनडीके पुस्तकालयों द्वारा परिभाषित विस्तारित कार्यक्षमता पर भरोसा नहीं करना चाहिए।

DAUA साझा लाइब्रेरी सिस्टम विभाजन पर बनी रह सकती है यदि संबंधित AOSP लाइब्रेरी समान कार्यक्षमता प्रदान कर सकती है और विक्रेता मॉड्यूल काम करना जारी रखता है जब सिस्टम विभाजन जेनरिक सिस्टम इमेज (GSI) द्वारा अधिलेखित हो जाता है।

ड्रॉप-इन प्रतिस्थापन महत्वपूर्ण है क्योंकि जीएसआई में अनमॉडिफाइड VNDK लाइब्रेरीज़ टक्कर पर संशोधित साझा लाइब्रेरीज़ के साथ लिंक होंगी। यदि AOSP पुस्तकालयों को एपीआई / ABI असंगत तरीके से संशोधित किया जाता है, तो GSI में AOSP पुस्तकालय अपरिभाषित व्यवहारों को लिंक या परिणाम करने में विफल हो सकते हैं।