सही VNDK स्नैपशॉट देने के लिए, सिस्टम इमेज का इस्तेमाल करके VNDK स्नैपशॉट लिया जा सकता है वेंडर इमेज के लिए लाइब्रेरी, तब भी जब सिस्टम और वेंडर की इमेज इनसे बनी हों के अलग-अलग वर्शन हैं. VNDK स्नैपशॉट बनाने के लिए, VNDK लाइब्रेरी का स्नैपशॉट के तौर पर इस्तेमाल किया जाता है. साथ ही, उन्हें वर्शन नंबर के साथ मार्क किया जाता है. कॉन्टेंट बनाने वेंडर की इमेज को किसी खास VNDK वर्शन से लिंक किया जा सकता है. यह वर्शन ज़रूरी एबीआई उपलब्ध कराता है देखें. हालांकि, उसी VNDK वर्शन में, वीएनडीके लाइब्रेरी एबीआई-स्टेबल.
VNDK स्नैपशॉट के डिज़ाइन में, वेब पर काम करने वाले सिस्टम की मौजूदा इमेज से वीएनडीके स्नैपशॉट के प्री-बिल्ड और इंस्टॉल किया जा रहा है पहले से बने हुए लिब्स को Android के नए वर्शन के सिस्टम पार्टिशन में भी ले जाया जा सकता है.
VNDK लाइब्रेरी के बारे में जानकारी
HIDL-HAL, इन्हें इस भाषा में पेश किया गया Android 8.0, सिस्टम और वेंडर पार्टीशन के लिए अलग-अलग अपग्रेड चालू करता है. वियतनामीज़ डोंग लाइब्रेरी (VNDK-कोर, VNDK-SP, और LL-NDK) के सेट के बारे में बताता है, जिन्हें वेंडर कोड जो वेंडर के साथ लिंक करता है और ऐसी लाइब्रेरी को इस्तेमाल करने से रोकता है जो VNDK में नहीं हैं सेट. इसलिए, सही VNDK होने पर ही वेंडर की इमेज बनाई और चलाई जा सकेगी सेट, वेंडर इमेज को दिए जाते हैं.
VNDK-कोर
VNDK-कोर लाइब्रेरी का सेट इसमें इंस्टॉल किया गया है
/system/lib[64]/vndk-${VER}
और उपलब्ध है
सिर्फ़ उन वेंडर प्रोसेस के लिए जिनके एपीआई लेवल बराबर हैं
${VER}
. हो सकता है कि सिस्टम प्रोसेस इन लाइब्रेरी का इस्तेमाल न करें और ऐसा करना ज़रूरी है
इसके बजाय, /system/lib[64]
में इंस्टॉल की गई लाइब्रेरी का इस्तेमाल करें. क्योंकि
का इस्तेमाल किया जा सकता है.
दो बार लोड होने से सुरक्षित रहते हैं.
वीएनडीके-कोर में किसी लाइब्रेरी को शामिल करने के लिए, इसे जोड़ें
Android.bp
:
vendor_available: true, vndk: { enabled: true, },अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
वीएनडीके-एसपी
VNDK-SP लाइब्रेरी, /system/lib[64]/vndk-sp-${VER}
में इंस्टॉल की गई हैं
साथ ही, ये वेंडर की प्रोसेस और सिस्टम से जुड़ी प्रोसेस (SP-HAL) की मदद से उपलब्ध होते हैं
वेंडर पार्टीशन में इंस्टॉल की गईं लाइब्रेरी). वीएनडीके-एसपी लाइब्रेरी
दो बार लोड किया गया.
VNDK-SP में किसी लाइब्रेरी को शामिल करने के लिए, Android.bp
में यह जोड़ें:
vendor_available: true, vndk: { enabled: true, support_system_process: true, },
एलएल-एनडीके
/system/lib[64]
में LL-NDK लाइब्रेरी इंस्टॉल की गई हैं. वेंडर के मॉड्यूल
एलएल-एनडीके स्टब लाइब्रेरी का इस्तेमाल करके, एलएल-एनडीके के पहले से चुने गए सिंबल को ऐक्सेस किया जा सकता है
लाइब्रेरी. एलएल-एनडीके लाइब्रेरी, पुराने सिस्टम के साथ काम करने वाली और एबीआई के साथ काम करने वाली होनी चाहिए,
वेंडर मॉड्यूल के पुराने वर्शन को चालू करके, LL-NDK लाइब्रेरी के नए वर्शन इस्तेमाल किए जा सकेंगे.
एलएल-एनडीके की एबीआई-स्टेबल विशेषताओं की वजह से, वीएनडीके स्नैपशॉट
पुरानी वेंडर इमेज के लिए LL-NDK लाइब्रेरी शामिल करने की ज़रूरत नहीं है.
VNDK स्नैपशॉट के बारे में जानकारी
Android 8.1 में VNDK शामिल है लाइब्रेरी होती हैं. हालांकि, इसके बाद के वर्शन के लिए Android के लिए, हर VNDK वर्शन को स्नैपशॉट के तौर पर कैप्चर किया जाना चाहिए. साथ ही, पहले से बिल्ड करें. इससे पुरानी वेंडर इमेज से लिंक करने की सुविधा चालू हो जाती है.
Android 9 की शुरुआत से, Android के नए वर्शन में
पुराने के लिए VNDK-कोर और VNDK-SP डायरेक्ट्री का कम से कम एक स्नैपशॉट शामिल करें
Android सोर्स कोड में भी अपडेट कर सकते हैं. बिल्ड के समय, ज़रूरी स्नैपशॉट इतने होंगे
/system/lib[64]/vndk-${VER}
पर इंस्टॉल किया और
/system/lib[64]/vndk-sp-${VER}
(इन डायरेक्ट्री का इस्तेमाल करके
वेंडर विभाजन), जहां ${VER}
ऐसा स्ट्रिंग वैरिएबल है
VNDK स्नैपशॉट के वर्शन का नाम दिखाता है.
VNDK स्नैपशॉट लाइब्रेरी हर VNDK वर्शन के लिए अलग-अलग हो सकती है. इसलिए, VNDK
स्नैपशॉट में लिंकर नेमस्पेस कॉन्फ़िगरेशन भी शामिल हैं, जो इस तरह इंस्टॉल किए गए हैं
etc/ld.config.${VER}.txt
,
/etc/llndk.libraries.${VER}.txt
, और
/etc/vndksp.libraries.${VER}.txt
.
उदाहरण: सिस्टम और वेंडर अपग्रेड करें इमेज
किसी स्नैपशॉट की ज़रूरत नहीं है; VNDK के लिए, अतिरिक्त कॉन्फ़िगरेशन के बिना बनाना स्नैपशॉट.
उदाहरण: सिर्फ़ सिस्टम की इमेज अपग्रेड करें
इसमें VNDK स्नैपशॉट और लिंकर नेमस्पेस कॉन्फ़िगरेशन फ़ाइलें शामिल होनी चाहिए
सिस्टम इमेज में वेंडर इमेज. लिंकर नेमस्पेस कॉन्फ़िगरेशन फ़ाइलें
में VNDK लाइब्रेरी खोजने के लिए, अपने-आप कॉन्फ़िगर हो जाता है
/system/lib[64]/vndk-${VER}
और
/system/lib[64]/vndk-sp-${VER}
.
![](https://source.android.google.cn/static/docs/core/architecture/images/vndk_snapshot_system_only.png?authuser=9&hl=hi)
उदाहरण: सिस्टम इमेज अपग्रेड करें, वेंडर की इमेज में मामूली बदलाव
वीएनडीके स्नैपशॉट से वेंडर इमेज बनाने की सुविधा अभी उपलब्ध नहीं है. इसलिए, आपको वेंडर इमेज को उसके ओरिजनल सोर्स कोड से अलग से बनाना होगा, फिर सिस्टम इमेज को अपग्रेड करें, जैसा कि पिछले उदाहरण में बताया गया है.
वीएनडीके स्नैपशॉट आर्किटेक्चर
Android 9 सिस्टम इमेज को Android 8.1 वेंडर की इमेज, Android 8.1 से मिलता-जुलता VNDK स्नैपशॉट Android 9 के साथ वेंडर की इमेज होनी चाहिए सिस्टम इमेज, जैसा कि नीचे दिखाया गया है:
![](https://source.android.google.cn/static/docs/core/architecture/images/vndk_snapshot_arch.png?authuser=9&hl=hi)
वीएनडीके स्नैपशॉट के डिज़ाइन में ये तरीके शामिल हैं:
- वीएनडीके-कोर और वीएनडीके-एसपी के लिए स्नैपशॉट जनरेट करना
लाइब्रेरी. Android 9 में, आपके काम की स्क्रिप्ट
का इस्तेमाल करके, मौजूदा वीएनडीके बिल्ड का स्नैपशॉट बनाया जा सकता है. यह स्क्रिप्ट सभी को बंडल करती है
/system/lib[64]/vndk-28
में लाइब्रेरी और मौजूदा/system/lib[64]/vndk-sp-28
का सोर्स, VNDK स्नैपशॉट है. यहां28
इसका VNDK वर्शन है Android 9. स्नैपशॉट में लिंकर भी शामिल है नेमस्पेस कॉन्फ़िगरेशन फ़ाइलें/etc/ld.config.28.txt
,/etc/llndk.libraries.28.txt
, और/etc/vndksp.libraries.28.txt
. जनरेट किए गए स्नैपशॉट का इस्तेमाल किया जाएगा जिसमें Android 9 या इसके बाद का कोई वर्शन हो. - पहले से बनी हुई वीएनडीके-कोर और वीएनडीके-एसपी लाइब्रेरी को
स्नैपशॉट में दिया गया है. Android 9 में, VNDK स्नैपशॉट में
इसमें पहले से बनी वीएनडीके-कोर लाइब्रेरी और वीएनडीके-एसपी लाइब्रेरी का सेट शामिल है.
लिंकर नेमस्पेस कॉन्फ़िगरेशन फ़ाइलों के तौर पर सबमिट करें. वियतनामीज़ डोंग (VNDK) की सूची देने पर
स्नैपशॉट वर्शन को इंस्टॉल करते समय, बिल्ड के समय, सिस्टम की इमेज इंस्टॉल होती है
VNDK स्नैपशॉट लाइब्रेरी को
/system/lib[64]/vndk-${VER}
और/system/lib[64]/vndk-sp-${VER}
डायरेक्ट्री और लिंकर उन VNDK स्नैपशॉट के लिए नेमस्पेस कॉन्फ़िगरेशन फ़ाइलें अपलोड करनी होंगी जो/etc
डायरेक्ट्री.
वीएनडीके वर्शन
Android की हर रिलीज़ में सिर्फ़ एक VNDK स्नैपशॉट होता है. SDK टूल के वर्शन का इस्तेमाल इस तरह किया जाता है
VNDK वर्शन (इसका मतलब है कि VNDK वर्शन में एक पूर्णांक संख्या है, जैसे कि 27
Android 8.1 के लिए. VNDK वर्शन तब ठीक हो जाता है, जब Android वर्शन
रिलीज़ किया गया. वेंडर पार्टीशन के लिए इस्तेमाल किया जाने वाला VNDK वर्शन सेव किया जाता है
ro.vndk.version
प्रॉपर्टी में अपने-आप जुड़ जाता है, जिसे पढ़ा जा सकता है
इस्तेमाल करते हैं. इसके बाद, इस वर्शन का इस्तेमाल वेंडर के वीएनडीके वर्शन की पहचान करने के लिए किया जाता है
और नेमस्पेस के लिए VNDK स्नैपशॉट वर्शन की पहचान करें
कॉन्फ़िगरेशन.
वीएनडीके लाइब्रेरी बनाएं
make vndk
कमांड, vndk:
{ enabled: true, … }
वाली लाइब्रेरी बनाता है. इनमें डिपेंडेंसी और नेमस्पेस शामिल हैं
कॉन्फ़िगरेशन फ़ाइलें हैं. अगर BOARD_VNDK_VERSION := current
सेट है,
ये लाइब्रेरी make
कमांड के साथ बनाई गई हैं.
यह बिल्ड स्नैपशॉट से VNDK लाइब्रेरी इंस्टॉल नहीं करता है, इसलिए इंस्टॉल की गई VNDK लाइब्रेरी, एबीआई-स्टेबल नहीं होती हैं. हालांकि, अगर Android वर्शन जारी कर दिया जाता है, तो मौजूदा वीएनडीके वर्शन का एबीआई तय कर दिया जाता है. इस स्थिति में, किसी भी एबीआई की गड़बड़ी, बिल्ड में गड़बड़ी होती है. इसलिए, Android वर्शन पर पैच पब्लिश नहीं किए जाने चाहिए VNDK लाइब्रेरी के लिए ABI को बदलना होगा.