वेंडर का एपीआई लेवल

विक्रेता एपीआई लेवल, इंटरफ़ेस का वह वर्शन होता है जो वेंडर विभाजन. इंटरफ़ेस दोतरफ़ा है; यह एपीआई के बारे में बताता है वेंडर पार्टीशन, सिस्टम पार्टिशन (हार्डवेयर) को उपलब्ध कराता है ऐब्स्ट्रक्शन लेयर या HAL इंटरफ़ेस), और वह एपीआई भी जो वेंडर पार्टीशन को सिस्टम पार्टीशन से ज़रूरी होता है (निचले लेवल के नेटिव डेवलपर किट या LLNDK इंटरफ़ेस).

वेंडर के एपीआई लेवल का इस्तेमाल, वेंडर सॉफ़्टवेयर की ज़रूरी शर्तें तय करने के लिए भी किया जाता है (वीएसआर), फ़ंक्शन से जुड़ी और काम न करने वाली ज़रूरी शर्तों का कलेक्शन है. वेंडर विभाजन का सॉफ़्टवेयर पूरा होना चाहिए.

इस पेज के बाकी हिस्से में बताया गया है कि सिस्टम प्रॉपर्टी का इस्तेमाल करके, Android वर्शन के हिसाब से वेंडर का पता लगाया जाता है एपीआई लेवल.

वेंडर को फ़्रीज़ कर दिया गया

Android, वेंडर को वीएसआर. सेट उन सुविधाओं का प्रतिशत जिन्हें Android, वेंडर पार्टीशन से तय करता है वेंडर एपीआई लेवल की वैल्यू, वेंडर पार्टीशन से जुड़ी है. रनटाइम के दौरान, व्यवहार सिस्टम पार्टिशन में चल रहा सॉफ़्टवेयर एक ही कीमत पर वेंडर पार्टीशन का वेंडर एपीआई लेवल. उदाहरण के लिए, हो सकता है कि सिस्टम पार्टीशन, नई सुविधाओं का इस्तेमाल न करे. ऐसा तब होगा, जब ये सुविधाएं इसके साथ काम नहीं करेंगी वेंडर पार्टीशन का एपीआई लेवल.

वेंडर को फ़्रीज़ करने की सुविधा सिर्फ़ तब उपलब्ध होती है, जब Android के साथ काम करने वाला डिवाइस.

वेंडर का एपीआई लेवल तय करना (Android 14-QPR3 और उसके बाद के वर्शन)

Android 14-QPR3 और उसके बाद के वर्शन के लिए, वेंडर एपीआई लेवल यह है अलग से रिलीज़ किया गया. इसका मतलब है कि SDK API लेवल और वेंडर एपीआई लेवल सिंक नहीं हैं.

Android के लिए अलग-अलग रिलीज़ शेड्यूल की वजह से 14-QPR3 और उसके बाद के वर्शन में, वेंडर एपीआई लेवल पूरी तरह से काम करता है SDK टूल के एपीआई लेवल से अलग किया गया था. यह पक्का करने के लिए कि अलग करने का यह तरीका साफ़ हो, वेंडर एपीआई लेवल का फ़ॉर्मैट, YYYYMM (साल और महीना) के फ़ॉर्मैट में दी गई तारीख है वहीं, SDK टूल का लेवल एक पूर्णांक होता है.

Android 14-QPR3 और उसके बाद के वर्शन में यह सिस्टम मौजूद है वेंडर के एपीआई लेवल से जुड़ी प्रॉपर्टी (ro.vendor.api_level):

सिस्टम की प्रॉपर्टी फ़ॉर्मैट करें ब्यौरा शुरुआती सेटिंग
ro.board.api_level YYYYMM वह वेंडर एपीआई लेवल जो चिपसेट के सॉफ़्टवेयर के साथ काम करता है. यह प्रॉपर्टी सभी चिपसेट के लिए सेट है. यह बिल्ड सिस्टम में अपने-आप सेट हो जाता है.
ro.board.first_api_level YYYYMM वह वेंडर एपीआई लेवल जिसके साथ चिपसेट का सॉफ़्टवेयर पहली बार रिलीज़ किया गया था. यह प्रॉपर्टी सिर्फ़ चिपसेट का इस्तेमाल करके काम करती है. अगर SoC चिपसेट, वेंडर को फ़्रीज़ करने की ज़रूरी शर्तें पूरी करता है, तो SoC वेंडर इसे सेट करते हैं. शुरुआती सेटिंग के बाद, इसमें बदलाव नहीं किया जाना चाहिए. SoC वेंडर ने इस सेटिंग को BOARD_SHIPPING_API_LEVEL का इस्तेमाल करके सेट किया.
ro.product.first_api_level पूर्णांक SDK टूल का वह एपीआई लेवल जिसके साथ शुरुआत में डिवाइस को लॉन्च किया गया था. इस प्रॉपर्टी को OEM सेट करता है और ओएस अपग्रेड होने के बाद भी, कभी अपडेट नहीं होता.
ro.vendor.api_level YYYYMM वेंडर एपीआई लेवल, जिसका पालन डिवाइस को करना होगा. इस तालिका के बाद बताया गया.
ro.board.api_frozen बूलियन अगर ro.board.api_level से जुड़े वेंडर एपीआई लेवल को तय किया जाता है, तो यह प्रॉपर्टी true पर सेट होती है. अगर यह प्रॉपर्टी सेट नहीं है, तो यह डिफ़ॉल्ट रूप से false पर सेट हो जाती है.
ro.llndk.api_level YYYYMM YYYYMM फ़ॉर्मैट का वेंडर एपीआई लेवल, जो सिस्टम पार्टीशन में मौजूदा LLNDK फ़ॉर्मैट में उपलब्ध है. LLNDK, पुराने सिस्टम के साथ काम करता है. इसलिए, इस एपीआई लेवल से कम या इसके बराबर की किसी भी वेंडर इमेज को, सिस्टम इमेज के साथ फ़्लैश किया जा सकता है. यह प्रॉपर्टी, सिस्टम पार्टीशन की मदद से सेट की गई है.

ro.vendor.api_level प्रॉपर्टी को बनाने के लिए, इनमें से किसी एक तरीके का इस्तेमाल किया जाता है:

  • अगर चिपसेट की वजह से वेंडर फ़्रीज़ हो सकता है, तो:

    ro.vendor.api_level = min(
      ro.board.api_level,
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
    
  • अगर चिपसेट, वेंडर फ़्रीज़ में नहीं है, तो:

    ro.vendor.api_level =
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
    

AVendorSupport_getVendorApiLevelOf() तरीका, संबंधित SDK टूल के एपीआई लेवल से वेंडर एपीआई लेवल पर. उदाहरण के लिए AVendorSupport_getVendorApiLevelOf(35) में 35, साल 2024 में Android की बड़ी रिलीज़ के तौर पर, 202404 दिखाया गया है. आम तौर पर, Android 14-QPR3 जब मौजूदा वेंडर एपीआई लेवल था सेट.

वेंडर का एपीआई लेवल तय करना (Android 13)

वेंडर का एपीआई लेवल, SDK टूल के एपीआई लेवल को फ़ॉलो करता है, जो ऐप्लिकेशन-ओएस के लिए होता है इंटरफ़ेस के रूप में होता है और इसे साल में एक बार नए Android प्लैटफ़ॉर्म के रिलीज़ होने पर अपडेट किया जाता है को एओएसपी के तौर पर भेजना होगा.

Android 13 में यह सिस्टम शामिल है वेंडर के एपीआई लेवल से जुड़ी प्रॉपर्टी (ro.vendor.api_level):

सिस्टम की प्रॉपर्टी फ़ॉर्मैट करें ब्यौरा शुरुआती सेटिंग
ro.board.first_api_level पूर्णांक वह वेंडर एपीआई लेवल जिसके साथ चिपसेट का सॉफ़्टवेयर पहली बार रिलीज़ किया गया था. यह सिर्फ़ चिपसेट का फ़ंक्शन है. इसमें SoC वेंडर या OEM बदलाव नहीं कर सकते. यह प्रॉपर्टी सिर्फ़ उन चिपसेट के लिए सेट है जो वेंडर फ़्रीज़ की ज़रूरी शर्तें पूरी करते हैं device.mk फ़ाइल में BOARD_SHIPPING_API_LEVEL सेट करके, वैल्यू तय की जाती है.
ro.board.api_level पूर्णांक वह वेंडर एपीआई लेवल जो चिपसेट के सॉफ़्टवेयर के साथ काम करता है. यह प्रॉपर्टी सिर्फ़ उन चिपसेट के लिए सेट होती है जो वेंडर फ़्रीज़ करने की ज़रूरी शर्तें पूरी करते हैं. यह प्रॉपर्टी सभी चिपसेट के लिए सेट है. शुरुआत में, इस प्रॉपर्टी की वैल्यू को बिल्ड सिस्टम के ज़रिए ro.board.first_api_level की वैल्यू पर ही सेट किया जाता है. हालांकि, वेंडर पार्टीशन को अपग्रेड करने पर इस वैल्यू को अपडेट किया जा सकता है.
ro.product.first_api_level पूर्णांक SDK टूल का वह एपीआई लेवल जिसके साथ शुरुआत में डिवाइस को लॉन्च किया गया था. इस प्रॉपर्टी को OEM सेट करता है और ओएस अपग्रेड होने के बाद भी, कभी अपडेट नहीं होता.
ro.vendor.api_level पूर्णांक यह ज़रूरी है कि डिवाइस, वेंडर एपीआई लेवल का पालन करे. इस तालिका के बाद बताया गया.
ro.vndk.version पूर्णांक VNDK का वह वर्शन जिसके लिए वेंडर विभाजन बनाया गया है. यह प्रॉपर्टी, सिस्टम पार्टीशन की मदद से सेट की गई है.
ro.vendor.build.version.sdk पूर्णांक उस सोर्स ट्री का SDK API लेवल जिसमें वेंडर पार्टीशन बनाया गया था.
ro.vendor.build.version.release पूर्णांक सोर्स ट्री का प्लैटफ़ॉर्म वर्शन, जहां वेंडर पार्टीशन बनाया गया था.
ro.vendor.build.version.release_or_codename पूर्णांक उस सोर्स ट्री का कोड नाम जहां वेंडर पार्टीशन बनाया गया था.

ro.vendor.api_level प्रॉपर्टी अपने-आप कम से कम ro.board.api_level पर सेट हो जाती है. इसके अलावा, अगर ro.board.api_level तय नहीं किया गया है, तो ro.board.first_api_level पर सेट हो जाती है और ro.product.first_api_level.