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'

डिवाइस का बूटलोडर, एवीबी प्रॉपर्टी को vbmeta इमेज से हासिल कर सकता है. इसके लिए: avb_property_lookup(). इससे कई vbmeta इमेज लोड की जा सकती हैं avb_slot_verify() और उन्हें यहां सेव किया जाता है AvbSlotVerifyData** out_data आउटपुट पैरामीटर.

वर्शन की जानकारी का डिफ़ॉल्ट फ़ॉर्मैट

डिफ़ॉल्ट रूप से, Android बिल्ड सिस्टम, ओएस के लिए नीचे दिए गए फ़ॉर्मैट का इस्तेमाल करता है वर्शन और सुरक्षा पैच का एक साथ इस्तेमाल कर सकते हैं.

com.android.build.${partition}.os_version का फ़ॉर्मैट A[.B.C] है, उदाहरण के लिए, 12 या 12.0.0:

  • जवाब: मेजर वर्शन
  • B: माइनर वर्शन मौजूद न होने पर, इसकी डिफ़ॉल्ट वैल्यू शून्य हो जाती है
  • C: सब-माइनर वर्शन, मौजूद न होने पर इसकी डिफ़ॉल्ट वैल्यू शून्य हो जाती है

com.android.build.${partition}.security_patch का फ़ॉर्मैट YYYY-MM-DD है.

डिफ़ॉल्ट रूप से, बिल्ड सिस्टम system के लिए com.android.build.${partition}.security_patch, system_ext और product पार्टिशन. डिवाइस निर्माता है 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)

कस्टम वर्शन की जानकारी दें

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

  • SYSTEM_OS_VERSION := 12.0.0 जनरेट करता है
    • com.android.build.system.os_version -> '12.0.0'
  • BOOT_OS_VERSION := a.b.c जनरेट करता है
    • com.android.build.boot.os_version -> 'a.b.c'
  • VENDOR_OS_VERSION := 12.0.1 जनरेट करता है
    • com.android.build.vendor.os_version -> '12.0.1'

इमेज बूट करने के हेडर में पुराने वर्शन की जानकारी

Android 9 और KeyMaster वाले वर्शन के साथ वर्शन बाइंडिंग boot.img हेडर से os_version को हटाने का सुझाव देता है.

तुलना के लिए, GA4 से वर्शन की जानकारी पाने के पुराने तरीके बूट इमेज हेडर के बारे में भी यहां बताया गया है. ध्यान दें कि os_version बूट हेडर के फ़ील्ड में, ओएस वर्शन और सिक्योरिटी पैच लेवल, दोनों को 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;