اندروید 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.sh
lunch target
m 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
نصب می کند.