اندروید 11 از مصنوعات ساخت عکس فوری VNDK و عکسهای فوری فروشنده پشتیبانی میکند، که میتوانید بدون در نظر گرفتن نسخه Android در درخت منبع، از آنها برای ساخت vendor.img استفاده کنید. این نسخه های ترکیبی از تصاویر را فعال می کند، مانند یک فروشنده قدیمی و یک تصویر سیستم جدیدتر.
نسخه های تصویر ترکیبی برای موارد زیر پشتیبانی نمی شوند.
Android.mk.از آنجایی که Soong عکس فوری فروشنده را تولید میکند، ماژولهای تعریفشده درAndroid.mkبهعنوان عکس فوری فروشنده گرفته نمیشوند (ماژولهای اختصاصی SoC درAndroid.mkنیز تضمینی برای کار کردن ندارند).ضد عفونی کننده عکسهای فوری فروشنده و VNDK از ضدعفونیکننده پشتیبانی نمیکنند، زیرا انواع ضدعفونیکننده باید جداگانه ساخته شوند.
درباره عکس های فوری فروشنده
عکس فوری فروشنده یک عکس فوری متعلق به OEM است. این مجموعه ای از ماژول های C++ از پیش ساخته شده است که در /vendor نصب شده اما در AOSP نگهداری می شود. بدون گرفتن عکس فوری فروشنده از نسخه قبلی اندروید، ارتقاء به نسخه جدید اندروید ممکن است پارتیشن فروشنده را خراب کند زیرا ماژول های عکس فوری فروشنده را می توان بدون سازگاری API یا ABI حذف یا تغییر داد.
یک عکس فوری فروشنده شامل ماژول های زیر در AOSP است.
- کتابخانه های مشترک، ایستا و هدر با
vendor: trueیاvendor_available: true - کتابخانه های استاتیک VNDK با
vendor_available: true - فایل های اجرایی و شی با
vendor: trueیاvendor_available: true
ماژول های زیر دایرکتوری های زیر کد سخت افزاری متعلق به SoC در نظر گرفته می شوند و نادیده گرفته می شوند.
-
device/ -
vendor/ -
hardware/به جز-
hardware/interfaces -
hardware/libhardware -
hardware/libhardware_legacy
-
کدهای سخت افزاری متعلق به SoC ممکن است در فهرست های دیگر نیز وجود داشته باشد. در حال حاضر، عکسهای فوری فروشنده از چنین تنظیماتی پشتیبانی نمیکنند.
عکس های فوری فروشنده بسازید
با استفاده از دستورات زیر یک عکس فوری از فروشنده بسازید.
. build/envsetup.shlunch targetm dist vendor-snapshot
این دستورات یک فایل vendor-$(TARGET_DEVICE).zip . در $DIST_DIR ایجاد می کند. مثال زیر یک فایل زیپ فوری فروشنده را نشان می دهد:
vendor-$(TARGET_DEVICE).zip
├── arch-arm64-armv8-a
│ ├── binary -> binary files, *.json files
│ ├── header -> *.json files
│ ├── object -> *.o files, *.json files
│ ├── shared -> *.so files, *.json files
│ └── static -> *.a files, *.json files
├── arch-arm-armv8-a -> (arch-arm64-armv8-a)
├── configs -> *.rc files, *.xml files
├── include -> exported header files (*.h, *.hh, etc.)
└── NOTICE_FILES -> license txt files
- فایل های JSON حاوی پرچم هایی مانند نام ماژول، دایرکتوری های صادر شده، فایل های
init_rcو فایل هایvintf_fragmentsهستند. - دایرکتوری
configsشامل فایلهای.rcو.xmlاز پرچمهایinit_rcوvintf_fragmentsاست.
عکس های فوری فروشنده را نصب کنید
برای نصب یک عکس فوری فروشنده، به فهرست مقصد بروید و از دستورات زیر استفاده کنید.
python3 development/vendor_snapshot/update.py --local $DIST_DIR --install-dir \
vendor/vendor name/vendor_snapshot VER این دستور /vendor/ vendor name /vendor_snapshot/v VER /$(TARGET_ARCH)/Android.bp را ایجاد می کند. مثال زیر ساختار دایرکتوری یک عکس فوری فروشنده را نشان می دهد:
vendor/vendor name/vendor_snapshot/
├── v30
│ ├── arm64
│ │ ├── arch-arm64-armv8-a
│ │ │ ├── binary -> (prebuilt libs)
│ │ │ ├── object -> (prebuilt libs)
│ │ │ ├── shared -> (prebuilt libs)
│ │ │ └── static -> (prebuilt libs)
│ │ ├── arch-arm-armv8-a -> (same as above)
│ │ ├── configs -> (config files)
│ │ ├── include -> (exported header files)
│ │ ├── NOTICE_FILES -> (license files)
│ │ └── Android.bp -> (snapshot modules)
│ ├── arm -> (same as above)
│ ├── x86_64 -> (same as above)
│ └── x86 -> (same as above)
└── (other vendor versions) -> (same as above)
ساخت تصاویر فروشنده
با استفاده از مصنوعات ساخت عکس فوری VNDK و یک عکس فوری فروشنده، میتوانید vendor.img بدون توجه به نسخه Android در درخت منبع بسازید و امکان ایجاد نسخههای ترکیبی از تصاویر را فراهم میکند. پس از نصب عکس فوری VNDK و عکس فوری فروشنده، BOARD_VNDK_VERSION روی نسخه فروشنده تنظیم کنید. به عنوان مثال:
# BoardConfig.mk
BOARD_VNDK_VERSION := 29
وقتی BOARD_VNDK_VERSION روی مقداری غیر از current تنظیم شود، سیستم ساخت:
- ماژولهای عکس فوری VNDK و ماژولهای عکس فوری فروشنده
BOARD_VNDK_VERSIONفعال میکند. هر ماژول snapshot یک ماژول منبع C++ را با همین نام لغو می کند. -
ro.vndk.versionرا رویBOARD_VNDK_VERSIONتنظیم می کند. - ماژول های عکس فوری VNDK
BOARD_VNDK_VERSIONرا درsystem_extنصب می کند.