वीएनडीके स्नैपशॉट, Android रिलीज़ के लिए वीएनडीके-कोर और वीएनडीके-एसपी लिब्स का सेट होता है.
आप फ़ाइल का सिस्टम पार्टिशन सिर्फ़ तब अपग्रेड कर सकते हैं, जब system.img
इसमें वीएनडीके से जुड़ा स्नैपशॉट शामिल होता है जिसकी ज़रूरत
vendor.img
.
आधिकारिक VNDK स्नैपशॉट, Android बिल्ड सर्वर पर अपने-आप बन जाते हैं
और Android सोर्स ट्री के /prebuilts/vndk
में जांच की. इसके लिए
वीएनडीके स्नैपशॉट बनाए जा सकते हैं. VNDK स्नैपशॉट
आर्म, आर्म64, x86, x86_64 TARGET_ARCH
फ़्लेवर के लिए काम करता है.
स्नैपशॉट बनाएं
Android बिल्ड सर्वर, बिल्ड आर्टफ़ैक्ट और VNDK स्नैपशॉट फ़ाइलें जनरेट करता है बिल्ड पैरामीटर और बिल्ड कमांड का इस्तेमाल करेंगे.
पैरामीटर बनाएं
बिल्ड टारगेट का नाम vndk
है. बिल्ड टारगेट कॉन्फ़िगरेशन
नीचे दी गई जानकारी देखें.
TARGET_PRODUCT |
TARGET_ARCH |
TARGET_ARCH_VARIANT |
---|---|---|
aosp_arm |
arm |
armv7-a-neon |
aosp_arm64 |
arm64 |
armv8-a |
aosp_x86 |
x86 |
x86 |
aosp_x86_64 |
x86_64 |
x86_64 |
TARGET_PRODUCT=aosp_$(TARGET_ARCH)
TARGET_BUILD_VARIANT=user
TARGET_ARCH
, जेनेरिक सिस्टम इमेज (जीएसआई) की तरह है टारगेट आर्क (arm
,arm64
,x86
,x86_64
).TARGET_ARCH_VARIANT
. स्नैपशॉट v28 (Android 9) और इसके बाद वाले वर्शन के लिए, इसमें ऊपर दिए गए लोकप्रिय कॉन्फ़िगरेशन शामिल हैं.
बिल्ड कमांड
आधिकारिक स्नैपशॉट के लिए, Android 9 और इसके बाद वाले वर्शन के लिए
इसमें एक सैंपल टारगेट (vndk
) शामिल है
vndk.mk
जो वीएनडीके बनाता और आउटपुट करता है
$DIST_DIR
का स्नैपशॉट. स्नैपशॉट ZIP फ़ाइल इस फ़ॉर्मैट का इस्तेमाल करती है
android-vndk-$(TARGET_ARCH).zip
.
उदाहरण के लिए:
lunch aosp_TARGET_ARCH-user
make -j vndk dist [BOARD_VNDK_VERSION=current]
Android बिल्ड सर्वर
build.sh
स्क्रिप्ट, ताकि इस्तेमाल किए जा सकने वाले सभी आर्क को बनाया जा सके
फ़्लेवर की जानकारी देखें.
DIST_DIR=dist_dir development/vndk/snapshot/build.sh
किसी Android वर्शन के लिए VNDK स्नैपशॉट, उस वर्शन के रिलीज़ ब्रांच.
स्थानीय तौर पर बनाएं
डेवलपमेंट के दौरान, लोकल सोर्स ट्री से VNDK स्नैपशॉट बनाए जा सकते हैं. इसके लिए, को कमांड देना होगा.
- साथ काम करने वाले सभी आर्क को एक साथ बनाने के लिए, नीचे दी गई बिल्ड स्क्रिप्ट चलाएं
(
build.sh
).cd $ANDROID_BUILD_TOP
development/vndk/snapshot/build.sh
- एक खास
TARGET_ARCH
बनाने के लिए, इन निर्देशों को लागू करें निर्देश देखें.lunch aosp_TARGET_ARCH-user
m -j vndk dist
संबंधित android-vndk-$(TARGET_ARCH).zip
फ़ाइल बनाई गई है
$DIST_DIR
से कम.
स्नैपशॉट फ़ाइलें
VNDK स्नैपशॉट में, ये फ़ाइलें शामिल होती हैं.
- VNDK-कोर और VNDK-SP शेयर की गई लाइब्रेरी का वेंडर वैरिएंट.
- LL-NDK की शेयर की गई लिब्स की ज़रूरत नहीं है, क्योंकि वे पुराने सिस्टम के साथ काम करती हैं.
- 64 बिट वाले टारगेट के लिए,
TARGET_ARCH
औरTARGET_2ND_ARCH
लाइब्रेरी बनाई गई हैं और इनमें शामिल हैं.
- VNDK-कोर, VNDK-SP, LL-NDK, और VNDK-निजी लाइब्रेरी की सूची यहां दी गई है:
[vndkcore|vndksp|llndk|vndkprivate].libraries.txt
. - लाइसेंस फ़ाइलें.
module_paths.txt
. सभी VNDK के लिए, मॉड्यूल पाथ रिकॉर्ड करता है लाइब्रेरी, जिनकी ज़रूरत यह देखने के लिए होती है कि GPL प्रोजेक्ट के सोर्स मौजूद हैं या नहीं दिए गए Android सोर्स ट्री में रिलीज़ किया जाता है.
दी गई VNDK स्नैपशॉट ZIP फ़ाइल के लिए,
android-vndk-$(TARGET_ARCH).zip
, पहले से बनी वीएनडीके लाइब्रेरी हैं
को नाम वाली अलग-अलग डायरेक्ट्री में ग्रुप किया गया है
एबीआई के हिसाब से arch-$(TARGET_ARCH)-$(TARGET_ARCH_VARIANT)
बिटनेस. उदाहरण के लिए, android-vndk-arm64.zip
के लिए 64-बिट लिब्स
को arch-arm64-armv8-a
के नीचे रखा जाता है और 32-बिट लिब्स को
arch-arm-armv8-a
के तहत रखा गया है. नीचे दिया गया उदाहरण
आर्म64 (TARGET_ARCH=arm64
) VNDK के लिए डायरेक्ट्री स्ट्रक्चर
स्नैपशॉट ZIP फ़ाइल (android-vndk-arm64.zip
).
वेंडर के स्नैपशॉट के लिए बनाएं
Android 11 पर काम करता है
वेंडर
स्नैपशॉट की मदद से, vendor.img
को बनाया जा सकता है
सोर्स ट्री पर मौजूद Android वर्शन है. डिफ़ॉल्ट VNDK स्नैपशॉट में
शेयर की गई लाइब्रेरी फ़ाइलें (.so
) जिन्हें डिवाइस और
इसके बाद, रनटाइम में वेंडर C++ बाइनरी से लिंक किया जाएगा. के ख़िलाफ़ बनाने के लिए
उस VNDK स्नैपशॉट के लिए, आपको अतिरिक्त आर्टफ़ैक्ट की ज़रूरत होगी. जैसे, हेडर फ़ाइलें और
एक्सपोर्ट किए गए फ़्लैग.
किसी स्थानीय सोर्स से ऐसे आर्टफ़ैक्ट (वीएनडीके स्नैपशॉट के साथ) जनरेट करने के लिए ट्री के लिए, नीचे दिए गए कमांड का इस्तेमाल करें.
VNDK_SNAPSHOT_BUILD_ARTIFACTS=true development/vndk/snapshot/build.sh
इस निर्देश से android-vndk-$(TARGET_ARCH).zip
फ़ाइलें बनती हैं
$DIST_DIR
. नीचे दिया गया उदाहरण एक Arm64 VNDK स्नैपशॉट ZIP फ़ाइल है
आर्टफ़ैक्ट इस्तेमाल करें. बोल्ड की गई फ़ाइलें, सामान्य VNDK में नई फ़ाइलें जोड़ी जाती हैं
का स्नैपशॉट (इमेज 1 में दिखाया गया है) और इसमें JSON फ़ाइलें (जो सेव की गई हैं) शामिल होती हैं
हर लाइब्रेरी का cflags
) और एक्सपोर्ट की गई सभी हेडर फ़ाइलें.
android-vndk-arm64.zip ├── arch-arm64-armv8-a │ └── shared │ ├── vndk-core -> *.so files, *.json files │ └── vndk-sp -> *.so files, *.json files ├── arch-arm-armv8-a -> (same as arch-arm64-armv8-a) ├── configs -> *.libraries.txt, module_paths.txt, module_names.txt ├── include -> exported header files (*.h, *.hh, etc.) └── NOTICE_FILES -> license txt files
VNDK स्नैपशॉट अपलोड करें
VNDK स्नैपशॉट, इसके तहत सोर्स ट्री में चुने जाते हैं
/prebuilts/vndk/vVER
, जहां
VER
, VNDK स्नैपशॉट के वर्शन के बराबर है
(जो Android रिलीज़ के SDK वर्शन का पालन करता है). इसके लिए
उदाहरण के लिए, Android 8.1 VNDK स्नैपशॉट का वर्शन 27 है.
updated.py स्क्रिप्ट का इस्तेमाल करें
update.py
स्क्रिप्ट
(/development/vndk/snapshot/update.py
) इस प्रोसेस को ऑटोमेट करता है
सोर्स ट्री में, पहले से बने VNDK स्नैपशॉट जोड़ें. यह अपने-आप,
आर्टफ़ैक्ट बनाता है और संबंधित प्रॉपर्टी को सही तरीके से भरता है
Android.bp
जनरेट हुआ. यह स्क्रिप्ट ये काम करती है:
/prebuilts/vndk/vVER
में, नई Git ब्रांच बनाने के लिएrepo start
का इस्तेमाल करता है.- VNDK स्नैपशॉट बिल्ड आर्टफ़ैक्ट को फ़ेच और अनज़िप करता है.
- बिल्ड फ़ाइलें अपने-आप जनरेट करने के लिए,
gen_buildfiles.py
पर काम करता है (Android.bp
). - पहले से बनी लाइब्रेरी की पुष्टि करने के लिए,
check_gpl_license.py
पर काम करता है जनरल पब्लिक लाइसेंस (GPL) के तहत लाइसेंस वाले स्रोत मौजूदा सोर्स ट्री. - नए बदलाव करने के लिए,
git commit
का इस्तेमाल करता है.
स्थानीय तौर पर बनाए गए VNDK स्नैपशॉट का इस्तेमाल करें
इसके अलावा, स्थानीय तौर पर बनाए गए वीएनडीके स्नैपशॉट भी इस्तेमाल किए जा सकते हैं. जब --local
विकल्प बताया गया है, update.py
स्क्रिप्ट VNDK स्नैपशॉट फ़ेच करती है
खास लोकल डायरेक्ट्री से आर्टफ़ैक्ट बनाएं, न कि Android
बिल्ड सर्वर) जिसमें android-vndk-$(TARGET_ARCH).zip
फ़ाइलें हैं
development/vndk/snapshot/build.sh
से जनरेट हुआ.
--local
विकल्प: update.py
स्क्रिप्ट, GPL को स्किप कर देती है
लाइसेंस की जांच और git commit
चरण देखें.
सिंटैक्स:
python update.py VER --local local_path
लोकल बिल्ड के साथ Android 8.1 VNDK स्नैपशॉट अपडेट करने के लिए निर्देश का उदाहरण
/path/to/local/dir
में आर्टफ़ैक्ट:
python update.py 27 --local /path/to/local/dir
स्थानीय तौर पर बनाए गए VNDK स्नैपशॉट के डायरेक्ट्री स्ट्रक्चर का उदाहरण:
prebuilts/vndk ├── v30 │ ├── arm64 │ │ ├── arch-arm64-armv8-a -> (prebuilt libs) │ │ ├── arch-arm-armv8-a -> (prebuilt libs) │ │ ├── configs -> (config files) │ │ ├── include -> (exported header files) │ │ └── Android.bp -> (VNDK modules with cflags) │ ├── arm -> (same as above) │ ├── x86_64 -> (same as above) │ ├── x86 -> (same as above) │ ├── common │ │ ├── NOTICE_FILES -> (license files) │ │ └── Android.bp -> (license file modules) │ └── Android.bp -> (*.libraries.30.txt modules) └── (other VNDK versions) -> (same as above)अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है अगर आर्टफ़ैक्ट का इस्तेमाल करके बनाए गए हैं, तो लोकल बिल्ड आर्टफ़ैक्ट अपने-आप जुड़ जाते हैं
VNDK_SNAPSHOT_BUILD_ARTIFACTS=true
.
VNDK स्नैपशॉट इंस्टॉल करें
सिस्टम इमेज, बिल्ड के दौरान VNDK स्नैपशॉट लाइब्रेरी इंस्टॉल करती है. इसके लिए, इसका इस्तेमाल किया जाता है
BOARD_VNDK_VERSION
में जानकारी,
PRODUCT_EXTRA_VNDK_VERSIONS
और ro.vndk.version
.
आपके पास यह कंट्रोल करने का विकल्प है कि पहले से बने वीएनडीके से कौनसे वीएनडीके स्नैपशॉट इंस्टॉल किए जाएं
स्नैपशॉट डायरेक्ट्री (उदाहरण के लिए, /prebuilts/vndk/v29
या
/prebuilts/vndk/v30
).
- पहला विकल्प:
BOARD_VNDK_VERSION
. इसका इस्तेमाल करें मौजूदा वेंडर मॉड्यूल बनाने के लिए मॉड्यूल का स्नैपशॉट मॉड्यूल पाएं और सिर्फ़ वेंडर मॉड्यूल के लिए ज़रूरी स्नैपशॉट मॉड्यूल. - दूसरा विकल्प:
PRODUCT_EXTRA_VNDK_VERSIONS
. वेंडर के मौजूदा मॉड्यूल पर ध्यान दिए बिना, VNDK स्नैपशॉट मॉड्यूल इंस्टॉल करें. ऐसा करने पर, पहले से बने VNDK स्नैपशॉट इंस्टॉल होते हैंPRODUCT_EXTRA_VNDK_VERSIONS
को किसी और से लिंक किए बिना मॉड्यूल मौजूद हैं.
board_VNDK_VERSION सेट करें
BOARD_VNDK_VERSION
में, मौजूदा वेंडर के लिए VNDK का वर्शन दिखाया जाता है
मॉड्यूल बनाने ज़रूरी हैं. अगर BOARD_VNDK_VERSION
के पास
/prebuilts/vndk
डायरेक्ट्री में उपलब्ध VNDK स्नैपशॉट,
BOARD_VNDK_VERSION
में दिखाया गया VNDK स्नैपशॉट इंस्टॉल हो गया है. अगर आपने
VNDK स्नैपशॉट, डायरेक्ट्री में उपलब्ध नहीं है. इसलिए, बिल्ड से जुड़ी गड़बड़ी होती है.
BOARD_VNDK_VERSION
तय करने से, VNDK मॉड्यूल की वैल्यू
इंस्टॉल किया गया. वेंडर मॉड्यूल को, इसमें बताए गए VNDK स्नैपशॉट वर्शन के साथ लिंक किया गया है
बिल्ड के समय BOARD_VNDK_VERSION
(इसमें मौजूदा बिल्ड नहीं होता है
सिस्टम सोर्स में VNDK मॉड्यूल). यहां से पूरा सोर्स ट्री डाउनलोड करते समय
डेटा स्टोर करने की जगह है, तो सिस्टम और वेंडर सोर्स, दोनों एक ही Android पर आधारित होते हैं
रिलीज़.
PRODUCT_EXTERNAL_VNDK_VERSIONS सेट करें
PRODUCT_EXTRA_VNDK_VERSIONS
में, VNDK के अतिरिक्त वर्शन की सूची
इंस्टॉल किया गया. आम तौर पर, मौजूदा रिपोर्ट के लिए एक VNDK स्नैपशॉट होना काफ़ी होता है
वेंडर विभाजन. हालांकि, कुछ मामलों में आपको एक से ज़्यादा सेगमेंट को शामिल करने की ज़रूरत पड़ सकती है
के स्नैपशॉट दिखाए जा सकते हैं. उदाहरण के लिए, जीएसआई में
एक ही सिस्टम इमेज वाले कई वेंडर वर्शन के साथ काम करती है. सेटिंग के अनुसार
PRODUCT_EXTRA_VNDK_VERSIONS
, वीएनडीके स्नैपशॉट इंस्टॉल किया जा सकता है
BOARD_VNDK_VERSION
में VNDK वर्शन के अतिरिक्त मॉड्यूल हैं.
अगर PRODUCT_EXTRA_VNDK_VERSIONS
के पास वर्शन की कोई खास सूची है, तो
बिल्ड सिस्टम, इसमें वर्शन सूची के पहले से बने स्नैपशॉट देखता है
prebuilts/vndk
डायरेक्ट्री. अगर बिल्ड सिस्टम, लिस्ट में दी गई सूची को ढूंढ लेता है
स्नैपशॉट लेता है, यह उन स्नैपशॉट फ़ाइलों को हर VNDK APEX पर इंस्टॉल करता है
(out/target/product/$(TARGET_DEVICE)/system_ext/apex/com.android.vndk.vVER
.
वर्शन मौजूद न होने से बिल्ड में गड़बड़ी होती है.
VNDK मॉड्यूल, बिल्ड के समय वेंडर मॉड्यूल से लिंक नहीं होता है. हालांकि, इन मॉड्यूल को
रनटाइम पर इसका इस्तेमाल तब किया जाता है जब वेंडर विभाजन में वेंडर मॉड्यूल के लिए इनमें से किसी एक की ज़रूरत होती है
VNDK के इंस्टॉल किए गए वर्शन हो सकते हैं. PRODUCT_EXTRA_VNDK_VERSIONS
मान्य है
का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब BOARD_VNDK_VERSION
की वैल्यू दी गई हो.
PLATFORM_VNDK_VERSION
PLATFORM_VNDK_VERSION
, मौजूदा VNDK के लिए VNDK वर्शन के बारे में बताता है
मॉड्यूल देखें. वैल्यू अपने-आप सेट होती है:
- रिलीज़ से पहले,
PLATFORM_VNDK_VERSION
इस तरह सेट हैPLATFORM_VERSION_CODENAME
. - रिलीज़ के समय,
PLATFORM_SDK_VERSION
को यहां कॉपी किया गयाPLATFORM_VNDK_VERSION
.
Android वर्शन रिलीज़ होने के बाद, मौजूदा VNDK लाइब्रेरी
VNDK APEX पर इंस्टॉल किया गया
(/system/apex/com.android.vndk.vVER
), जहां
VER
इसमें सेव किया गया वर्शन है
PLATFORM_VNDK_VERSION
.
जब BOARD_VNDK_VERSION
को current
पर सेट किया जाता है, तो
PLATFORM_VNDK_VERSION
को ro.vndk.version
में सेव किया गया है,
नहीं तो BOARD_VNDK_VERSION
यहां सेव रहेगा
ro.vndk.version
. PLATFORM_VNDK_VERSION
इस पर सेट है
Android के रिलीज़ होने पर एसडीके का वर्शन; रिलीज़ से पहले, अक्षर और अंक वाला Android
कोड नाम का इस्तेमाल PLATFORM_VNDK_VERSION
के लिए किया गया है.
VNDK वर्शन की सेटिंग के बारे में खास जानकारी
इस टेबल में, VNDK वर्शन की सेटिंग की खास जानकारी दी गई है.
वेंडर बिल्ड |
बोर्ड वर्शन |
SDK टूल रिलीज़ |
प्लैटफ़ॉर्म वर्शन |
वर्शन प्रॉपर्टी |
डायरेक्ट्री इंस्टॉल करें |
---|---|---|---|---|---|
मौजूदा VNDK मॉड्यूल | current |
पहले | CODE_NAME |
CODE_NAME |
/system/apex/com.android.vndk.vCODE_NAME |
बाद में | SDK_VER |
SDK_VER |
/system/apex/com.android.vndk.vSDK_VER |
||
पहले से बने स्नैपशॉट मॉड्यूल | स्नैपशॉट के लिए VNDK_VER |
पहले या बाद में | CODE_NAME या SDK_VER |
VNDK_VER |
/system_ext/apex/com.android.vndk.vVNDK_VER |
- बोर्ड वर्शन (
BOARD_VNDK_VERSION
). वियतनामीज़ डोंग का एक वर्शन होना चाहिए, जिसे वेंडर मॉड्यूल को बनाने की ज़रूरत है.current
पर सेट करें, अगर वेंडर मॉड्यूल को मौजूदा सिस्टम मॉड्यूल के साथ लिंक किया जा सकता है. - प्लैटफ़ॉर्म वर्शन (
PLATFORM_VNDK_VERSION
). VNDK वर्शन जिसे मौजूदा सिस्टम मॉड्यूल बनाया जा रहा है. सिर्फ़ तब बनाया जाता है, जबBOARD_VNDK_VERSION
मौजूदा वैल्यू के बराबर है. - वर्शन प्रॉपर्टी (
ro.vndk.version
). प्रॉपर्टी जो VNDK वर्शन के बारे में बताता है. इसके लिए, sellers.img में बाइनरी और libs की ज़रूरत होती है दौड़ना.vendor.img
में यहां सेव किया गया/vendor/default.prop
.