تولید کردن تصاویر فوری فروشنده

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/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/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 نصب می‌کند.