عکس های فوری فروشنده ایجاد کنید

اندروید ۱۱ از مصنوعات ساخت اسنپ‌شات VNDK و اسنپ‌شات‌های فروشنده پشتیبانی می‌کند که می‌توانید از آن‌ها برای ساخت vendor.img صرف نظر از نسخه اندروید روی درخت منبع استفاده کنید. این امر امکان ساخت نسخه‌های ترکیبی از تصاویر، مانند یک فروشنده قدیمی‌تر و یک تصویر سیستم جدیدتر را فراهم می‌کند.

نسخه‌های ترکیبی تصویر برای موارد زیر پشتیبانی نمی‌شوند.

  • Android.mk. از آنجا که Soong اسنپ‌شات فروشنده را تولید می‌کند، ماژول‌های تعریف‌شده در Android.mk به عنوان اسنپ‌شات فروشنده ثبت نمی‌شوند (همچنین تضمینی برای کارکرد ماژول‌های اختصاصی SoC در Android.mk وجود ندارد).

  • ضدعفونی‌کننده. اسنپ‌شات‌های Vendor و 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 ممکن است در دایرکتوری‌های دیگر نیز وجود داشته باشند. در حال حاضر، اسنپ‌شات‌های فروشنده از چنین پیکربندی‌هایی پشتیبانی نمی‌کنند.

ساخت اسنپ‌شات‌های فروشنده

با استفاده از دستورات زیر، یک snapshot از فروشنده بسازید.

. build/envsetup.sh
lunch target
m dist vendor-snapshot

این دستورات یک فایل vendor-$(TARGET_DEVICE).zip در $DIST_DIR ایجاد می‌کنند. مثال زیر یک فایل فشرده snapshot از vendor را نشان می‌دهد:

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 از flagهای init_rc و vintf_fragments است.

نصب اسنپ‌شات‌های فروشنده

برای نصب یک vendor snapshot، به دایرکتوری مقصد بروید و از دستورات زیر استفاده کنید.

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 را تولید می‌کند. مثال زیر ساختار دایرکتوری یک snapshot از vendor را نشان می‌دهد:

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 صرف نظر از نسخه اندروید روی درخت منبع بسازید و ایجاد نسخه‌های ترکیبی از تصاویر را ممکن کنید. پس از نصب اسنپ‌شات 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 نصب می‌کند.