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

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

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

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

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

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

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

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

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

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

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

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