از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
اطلاعات نسخه در ویژگی های AVB
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
برای پشتیبانی نسخه KeyMint (قبلاً Keymaster)، انتظار می رود بوت لودر دستگاه نسخه سیستم عامل (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 را از یک تصویر vbmeta با استفاده از avb_property_lookup()
دریافت کند. چندین تصویر vbmeta را می توان توسط avb_slot_verify()
بارگذاری کرد و در پارامتر خروجی AvbSlotVerifyData**
out_data
ذخیره می شود.
به طور پیش فرض، سیستم ساخت اندروید از فرمت زیر به ترتیب برای نسخه سیستم عامل و وصله امنیتی استفاده می کند.
قالب com.android.build.${partition}.os_version
A[.BC] است، به عنوان مثال، 12
یا 12.0.0
:
- A: نسخه اصلی
- ب: نسخه جزئی، در صورت عدم وجود آن به صورت پیش فرض صفر می شود
- ج: نسخه فرعی، در صورت وجود نداشتن، به طور پیش فرض صفر می شود
قالب com.android.build.${partition}.security_patch
YYYY-MM-DD است.
به طور پیشفرض سیستم ساخت com.android.build.${partition}.security_patch
برای پارتیشنهای system
، 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)
با شروع اندروید 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 و بالاتر، نسخه Binding Keymaster 4 پیشنهاد می کند که os_version
از هدر boot.img
حذف کنید.
برای مقایسه، استفاده منسوخ از دریافت اطلاعات نسخه از هدر تصویر بوت نیز در اینجا توضیح داده شده است. توجه داشته باشید که فیلد os_version
در هدر بوت هم نسخه سیستم عامل و هم سطح وصله امنیتی را در یک عدد صحیح بدون علامت 32 بیتی ترکیب می کند. و این مکانیسم فرض می کند که همه تصاویر با هم به روز می شوند، که پس از ماژولارسازی پارتیشن در Project Treble منسوخ شده است.
// 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;
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Version information in AVB properties\n\nTo support KeyMint (previously Keymaster) [version\nbinding](/docs/security/features/keystore/version-binding),\nthe device bootloader is expected to provide the operating system (OS) version\nand the security patch level for each partition. The OS version and the security\npatch level are two separate key-value pairs in the [AVB\nproperties](https://android.googlesource.com/platform/external/avb/+/refs/heads/android16-release/libavb/avb_property_descriptor.h).\nFor example:\n\n- `com.android.build.system.os_version -\u003e '12'`\n- `com.android.build.system.security_patch -\u003e '2022-02-05'`\n- `com.android.build.vendor.os_version -\u003e '12'`\n- `com.android.build.vendor.security_patch -\u003e '2022-02-05'`\n- `com.android.build.boot.os_version -\u003e '12'`\n- `com.android.build.boot.security_patch -\u003e '2022-02-05'`\n\nThe device bootloader can get those AVB properties from a vbmeta image using\n[`avb_property_lookup()`](https://cs.android.com/android/platform/superproject/+/android-latest-release:external/avb/libavb/avb_property_descriptor.h;l=83;drc=fbd9f0de0a21605d09d2c1388f0cab947f7e920e).\nMultiple vbmeta images can be loaded by\n[`avb_slot_verify()`](https://cs.android.com/android/platform/superproject/+/android-latest-release:external/avb/libavb/avb_slot_verify.c;l=1366;drc=c0debbfd55f08a755b006550779c23e707d30b6d)\nand are stored in the\n[`AvbSlotVerifyData**`](https://cs.android.com/android/platform/superproject/+/android-latest-release:external/avb/libavb/avb_slot_verify.h;l=308;drc=7043326a1c206b7abb627b4d8c7a47f3acd4aa46)\n[`out_data`](https://cs.android.com/android/platform/superproject/+/android-latest-release:external/avb/libavb/avb_slot_verify.c;l=1371;drc=c0debbfd55f08a755b006550779c23e707d30b6d)\noutput parameter.\n\nThe default format of the version information\n---------------------------------------------\n\nBy default, the Android build system uses the following format for the OS\nversion and the security patch, respectively.\n\nThe format of `com.android.build.${partition}.os_version` is A\\[.B.C\\],\nfor example, `12` or `12.0.0`:\n\n- A: major version\n- B: minor version, defaults to zero when it is absent\n- C: sub-minor version, defaults to zero when it is absent\n\nThe format of `com.android.build.${partition}.security_patch` is YYYY-MM-DD.\n\nBy default the build system generates\n`com.android.build.${partition}.security_patch` for the `system`,\n`system_ext`, and `product` partitions. The device manufacturer is\nexpected to set `BOOT_SECURITY_PATCH`, `VENDOR_SECURITY_PATCH`, and other\npatches, for nonsystem partitions. For example:\n\n- `BOOT_SECURITY_PATCH := 2022-01-05` generates\n - `com.android.build.boot.security_patch -\u003e '2022-01-05'`\n- `VENDOR_SECURITY_PATCH := 2022-02-05` generates\n - `com.android.build.vendor.security_patch -\u003e '2022-02-05'`\n\nThe device manufacturer can set `*_SECURITY_PATCH` to\n`$(PLATFORM_SECURITY_PATCH)`\nif it always updates all partitions to the version with the same security\npatch level.\n\n- `BOOT_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)`\n- `VENDOR_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)`\n\nSpecify custom version information\n----------------------------------\n\nStarting in Android 13, each device build can have a\ncustom value for the OS version that can be recognized by the device bootloader.\nFor example:\n\n- `SYSTEM_OS_VERSION := 12.0.0` generates\n - `com.android.build.system.os_version -\u003e '12.0.0'`\n- `BOOT_OS_VERSION := a.b.c` generates\n - `com.android.build.boot.os_version -\u003e 'a.b.c'`\n- `VENDOR_OS_VERSION := 12.0.1` generates\n - `com.android.build.vendor.os_version -\u003e '12.0.1'`\n\nThe obsolete version information in the boot image header\n---------------------------------------------------------\n\nIn Android 9 and higher, Keymaster 4's\n[version binding](/docs/security/features/keystore/version-binding)\nsuggests removing `os_version` from the `boot.img` header.\n\nFor comparison, the obsolete usage of obtaining the version information from the\nboot image header is also described here. Note that the\n[`os_version`](https://cs.android.com/android/kernel/superproject/+/common-android-mainline:tools/mkbootimg/include/bootimg/bootimg.h;l=257;drc=b4b04c2a965d9b3ce1ebf0442fc8047fe103d4e6)\nfield in the boot header combines both OS version and security patch level into\na 32-bit unsigned integer. And this mechanism assumes that all images will be\nupdated together, which is obsolete after partition modularization in\n[Project Treble](https://android-developers.googleblog.com/2017/05/here-comes-treble-modular-base-for.html). \n\n // Operating system version and security patch level.\n // For version \"A.B.C\" and patch level \"Y-M-D\":\n // (7 bits for each of A, B, C; 7 bits for (Y-2000), 4 bits for M)\n // A = os_version[31:25]\n // B = os_version[24:18]\n // C = os_version[17:11]\n // Y = 2000 + os_version[10:4]\n // M = os-version[3:0]\n\n uint32_t os_version;"]]