एवीबी संपत्तियों में संस्करण जानकारी

कीमास्टर संस्करण बाइंडिंग का समर्थन करने के लिए, डिवाइस बूटलोडर से प्रत्येक विभाजन के लिए ऑपरेटिंग सिस्टम (ओएस) संस्करण और सुरक्षा पैच स्तर प्रदान करने की उम्मीद की जाती है। OS संस्करण और सुरक्षा पैच स्तर AVB गुणों में दो अलग-अलग कुंजी -> मान जोड़े हैं। उदाहरणार्थ,

  • com.android.build.system.os_version -> '12'
  • com.android.build.system.security_patch -> '2022-02-05'
  • com.android.build.vendor.os_version -> '12'
  • com.android.build.vendor.security_patch -> '2022-02-05'
  • com.android.build.boot.os_version -> '12'
  • com.android.build.boot.security_patch -> '2022-02-05'

डिवाइस बूटलोडर उन AVB गुणों को avb_property_lookup() के माध्यम से vbmeta छवि से प्राप्त कर सकता है। एकाधिक vbmeta छवियों को avb_slot_verify() द्वारा लोड किया जा सकता है और AvbSlotVerifyData** out_data आउटपुट पैरामीटर में संग्रहीत किया जाएगा।

संस्करण जानकारी का डिफ़ॉल्ट स्वरूप

डिफ़ॉल्ट रूप से, एंड्रॉइड बिल्ड सिस्टम क्रमशः ओएस संस्करण और सुरक्षा पैच के लिए निम्नलिखित प्रारूप का उपयोग करेगा।

com.android.build.${partition}.os_version का प्रारूप A[.BC] है, उदाहरण के लिए, '12' या '12.0.0':

  • ए: प्रमुख संस्करण
  • बी: लघु संस्करण, अनुपस्थित होने पर डिफ़ॉल्ट शून्य हो जाता है
  • सी: उप-लघु संस्करण, अनुपस्थित होने पर डिफ़ॉल्ट शून्य हो जाता है

com.android.build.${partition}.security_patch का प्रारूप YYYY-MM-DD है।

डिफ़ॉल्ट रूप से बिल्ड सिस्टम system , system_ext और product विभाजन के लिए केवल com.android.build.${partition}.security_patch उत्पन्न करेगा। डिवाइस निर्माता से गैर-सिस्टम विभाजन के लिए BOOT_SECURITY_PATCH , VENDOR_SECURITY_PATCH इत्यादि सेट करने की अपेक्षा की जाती है। उदाहरणार्थ,

  • BOOT_SECURITY_PATCH := 2022-01-05 उत्पन्न होता है
    • com.android.build.boot.security_patch -> '2022-01-05'
  • VENDOR_SECURITY_PATCH := 2022-02-05 उत्पन्न होता है
    • com.android.build.vendor.security_patch -> '2022-02-05'

डिवाइस निर्माता *_SECURITY_PATCH $(PLATFORM_SECURITY_PATCH) पर सेट कर सकता है यदि वह हमेशा सभी विभाजनों को समान सुरक्षा पैच स्तर के साथ संस्करण में अपडेट करेगा।

  • BOOT_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)
  • VENDOR_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)

कस्टम संस्करण जानकारी निर्दिष्ट करना

एंड्रॉइड 13 से शुरू होकर, प्रत्येक डिवाइस बिल्ड में ओएस संस्करण के लिए एक कस्टम मान हो सकता है जिसे डिवाइस बूटलोडर द्वारा पहचाना जा सकता है। उदाहरणार्थ,

  • SYSTEM_OS_VERSION := 12.0.0 उत्पन्न करता है
    • com.android.build.system.os_version -> '12.0.0'
  • BOOT_OS_VERSION := abc उत्पन्न करता है
    • com.android.build.boot.os_version -> 'abc'
  • VENDOR_OS_VERSION := 12.0.1 उत्पन्न करता है
    • com.android.build.vendor.os_version -> '12.0.1'

बूट छवि शीर्षलेख में अप्रचलित संस्करण की जानकारी

एंड्रॉइड 9 से शुरू होकर, कीमास्टर संस्करण बाइंडिंग boot.img हेडर से os_version हटाने का सुझाव देती है।

तुलना के लिए, बूट छवि हेडर से संस्करण जानकारी प्राप्त करने के अप्रचलित उपयोग का भी यहां वर्णन किया गया है। ध्यान दें कि बूट हेडर में os_version फ़ील्ड OS संस्करण और सुरक्षा पैच स्तर दोनों को 32-बिट अहस्ताक्षरित पूर्णांक में जोड़ती है। और यह तंत्र मानता है कि सभी छवियों को एक साथ अपडेट किया जाएगा, जो प्रोजेक्ट ट्रेबल में विभाजन मॉड्यूलराइजेशन के बाद अप्रचलित है।

// Operating system version and security patch level.
// For version "A.B.C" and patch level "Y-M-D":
//   (7 bits for each of A, B, C; 7 bits for (Y-2000), 4 bits for M)
//   A = os_version[31:25]
//   B = os_version[24:18]
//   C = os_version[17:11]
//   Y = 2000 + os_version[10:4]
//   M = os-version[3:0]

uint32_t os_version;