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

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

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

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

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