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

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

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

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

वेंडर फ़्रीज़

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

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

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

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

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

Android 14-QPR3 और इसके बाद के वर्शन में, वेंडर एपीआई लेवल से जुड़ी ये सिस्टम प्रॉपर्टी शामिल हैं:

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

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() तरीके से, एसडीके के एपीआई लेवल से वेंडर के एपीआई लेवल का पता चलता है. उदाहरण के लिए AVendorSupport_getVendorApiLevelOf(35), जहां 35, 2024 में Android के मुख्य वर्शन का एसडीके एपीआई लेवल है. इससे 202404 मिलता है, जो Android 14-QPR3 की अनुमानित तारीख है. इस तारीख को वेंडर एपीआई का मौजूदा लेवल सेट किया गया था.

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

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

Android 13 में, वेंडर एपीआई लेवल से जुड़ी ये सिस्टम प्रॉपर्टी शामिल हैं:

सिस्टम प्रॉपर्टी फ़ॉर्मैट ब्यौरा शुरुआती सेटिंग
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 पूर्णांक डिवाइस को जिस एसडीके एपीआई लेवल के साथ लॉन्च किया गया था. इस प्रॉपर्टी को ओईएम सेट करता है. इसके बाद, ओएस अपग्रेड होने पर भी इसे कभी अपडेट नहीं किया जाता.
ro.vendor.api_level पूर्णांक यह पिछली टेबल में वेंडर एपीआई लेवल के ब्यौरे के जैसा ही है.
ro.vndk.version पूर्णांक वेंडर पार्टिशन को बनाने के लिए इस्तेमाल किया गया वीएनडीके वर्शन. यह प्रॉपर्टी, वेंडर पार्टिशन में सेट की गई है.
ro.vendor.build.version.sdk पूर्णांक सोर्स ट्री का एसडीके एपीआई लेवल, जहां वेंडर पार्टिशन बनाया गया था.