वीएनडीके एक्सटेंशन

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

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

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

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

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

मॉड्यूल को उन कार्यात्मकताओं के आधार पर वर्गीकृत करें जिन्हें वे परिभाषित और उपयोग करते हैं

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

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

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

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

प्रयुक्त कार्यशीलता
केवल एओएसपी (यूए) विस्तारित (यूएक्स)
परिभाषित कार्यक्षमता केवल एओएसपी (डीए) DAUA डौक्स
विस्तारित (डीएक्स) डीएक्सयूए डीएक्सयूएक्स

वीएनडीके विस्तार तंत्र

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

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

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