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

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

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

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

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

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

वेंडर फ़्रीज़ की सुविधा सिर्फ़ तब उपलब्ध होती है, जब कोई ऐसा डिवाइस बनाया जा रहा हो जो 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 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 के मुख्य वर्शन का SDK टूल एपीआई लेवल है, तो यह 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 टूल एपीआई लेवल जहां वेंडर पार्टीशन बनाया गया था.
ro.vendor.build.version.release पूर्णांक सोर्स ट्री का प्लैटफ़ॉर्म वर्शन, जहां वेंडर पार्टीशन बनाया गया था.
ro.vendor.build.version.release_or_codename पूर्णांक उस सोर्स ट्री का कोड नेम जहां वेंडर पार्टीशन बनाया गया था.

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