Android 11 از ساخت عکس آنی VNDK
مصنوعات
و عکسهای آنی فروشنده پشتیبانی میکند که میتوانید از آنها برای ساختن vendor.img صرفنظر از
نسخه Android در درخت منبع استفاده کنید. این کار نسخههای ترکیبی تصاویر را فعال میکند،
مانند فروشنده قدیمیتر و تصویر سیستم جدیدتر.
از نسخههای ترکیبی تصویر برای موارد زیر پشتیبانی نمیشود.
Android.mk.چون Soong چسبانبرچسب فروشنده را تولید میکند، واحدهای تعریفشده درAndroid.mkبهعنوان چسبانبرچسب فروشنده ضبط نمیشوند (واحدهای اختصاصی SoC درAndroid.mkنیز تضمین نمیشوند که کار کنند).ضدعفونیکننده. نماینده و تصاویر فوری VNDK از پاککننده پشتیبانی نمیکنند زیرا گونههای پاککننده باید بهصورت جداگانه ساخته شوند.
درباره عکسهای آنی فروشنده
عکس آنی فروشنده عکس آنی تحت مالکیت سازنده تجهیزات اصلی است. این مجموعه از پودمانهای C++ ازپیشساختهشده
در /vendor نصب شده است اما در AOSP نگهداری میشود. بدون گرفتن
عکس فوری فروشنده از نسخه قبلی Android، ارتقا به نسخه جدید Android
ممکن است پارتیشن فروشنده را خراب کند زیرا واحدهای عکس فوری فروشنده میتوانند بدون سازگاری API یا ABI برداشته
یا تغییر کنند.
«نمای فوری فروشنده» حاوی واحدهای زیر در AOSP است.
- کتابخانههای مشترک، ثابت، و سرصفحه با
vendor: trueیاvendor_available: true - کتابخانههای ایستا VNDK با
vendor_available: true - فایلهای اجرایی و شیء با
vendor: trueیاvendor_available: true
واحدهای موجود در فهرستگانهای زیر بهعنوان کد سختافزار متعلق به SoC درنظر گرفته میشوند و نادیده گرفته میشوند.
device/vendor/-
hardware/، بهجزhardware/interfaceshardware/libhardwarehardware/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/vVER/$(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را فعال میکند. هر واحد عکس آنی یک واحد منبع C++ را با همان نام لغو میکند. -
ro.vndk.versionرا رویBOARD_VNDK_VERSIONتنظیم میکند. - پیمانههای چسبنده VNDK نسخه
BOARD_VNDK_VERSIONرا درsystem_extنصب میکند.