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

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

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

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

वेंडर के खाते को फ़्रीज़ करना

Android, वेंडर को वीएसआर के किसी खास वर्शन पर वेंडर पार्टिशन को फ़्रीज़ करने की अनुमति देता है. 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 पूर्णांक सोर्स ट्री का एसडीके एपीआई लेवल, जहां वेंडर पार्टिशन बनाया गया था.