توسعه مانیفست دستگاه

هنگام توسعه و انتشار دستگاه‌های جدید، فروشندگان می‌توانند نسخه FCM هدف را در مانیفست دستگاه (DM) تعریف و اعلام کنند. هنگام ارتقا دادن تصویر فروشنده برای دستگاه‌های قدیمی، فروشندگان می‌توانند انتخاب کنند که نسخه‌های جدید HAL را پیاده‌سازی کنند و نسخه FCM هدف را افزایش دهند.

توسعه دستگاه‌های جدید

هنگام تعریف نسخه FCM هدف دستگاه برای دستگاه‌های جدید:

  1. DEVICE_MANIFEST_FILE و PRODUCT_ENFORCE_VINTF_MANIFEST را تعریف‌نشده بگذارید.
  2. «لایه‌های انتزاع سخت‌افزار» را برای نسخه FCM هدف پیاده‌سازی کنید.
  3. فایل مانیفست دستگاه صحیح را بنویسید.
  4. نسخه FCM هدف را در فایل مانیفست دستگاه بنویسید.
  5. ‫DEVICE_MANIFEST_FILE تنظیم شود.
  6. ‫PRODUCT_ENFORCE_VINTF_MANIFEST را روی true تنظیم کنید.

دستگاه‌های جدید منتشر کنید

وقتی دستگاه جدیدی منتشر می‌شود، نسخه FCM هدف اولیه آن باید تعیین شود و در مانیفست دستگاه به‌عنوان مشخصه «target-level» در عنصر سطح بالای <manifest> اعلام شود.

برای مثال، دستگاه‌هایی که با Android 9 راه‌اندازی می‌شوند باید نسخه هدف FCM برابر با ۳ (بالاترین نسخه دردسترس در این زمان) داشته باشند. برای اعلام این مورد در مانیفست دستگاه:

<manifest version="1.0" type="device" target-level="3">
    <!-- ... -->
</manifest>

ارتقا دادن تصویر فروشنده

هنگام ارتقا دادن تصویر فروشنده برای دستگاه قدیمی، فروشندگان می‌توانند انتخاب کنند که نسخه‌های جدید HAL را پیاده‌سازی کنند و نسخه FCM هدف را افزایش دهند.

ارتقا دادن HAL

درطول ارتقای تصویر فروشنده، فروشندگان می‌توانند نسخه‌های جدید HAL را پیاده‌سازی کنند به‌شرطی که نام HAL، نام میانای، و نام نمونه یکسان باشد. برای مثال:

  • دستگاه‌های Google Pixel 2 و Pixel 2 XL با نسخه هدف FCM 2 منتشر شدند که HAL صوتی 2.0 موردنیاز را پیاده‌سازی کرده است android.hardware.audio@2.0::IDeviceFactory/default.
  • برای HAL صوتی نسخه ۴.۰ که با Android 9 منتشر شد، دستگاه‌های Google Pixel 2 و Pixel 2 XL می‌توانند از OTA کامل برای ارتقا به HAL نسخه ۴.۰ استفاده کنند که android.hardware.audio@4.0::IDeviceFactory/default را پیاده‌سازی می‌کند.
  • بااینکه compatibility_matrix.2.xml فقط صدای ۲.۰ را مشخص می‌کند، الزام مربوط به تصویر فروشنده با FCM هدف نسخه ۲ کاهش یافته است زیرا چارچوب Android 9 (FCM نسخه ۳) صدای ۴.۰ را ازنظر عملکرد جایگزین HAL صدای ۲.۰ می‌داند.

به‌طور خلاصه، با توجه به اینکه compatibility_matrix.2.xml به صوت ۲.۰ نیاز دارد و compatibility_matrix.3.xml به صوت ۴.۰ نیاز دارد، الزامات به شرح زیر است:

نسخه FCM (سیستم) نسخه هدف FCM (فروشنده) الزامات
‫۲ (۸.۱) ‫۲ (۸.۱) Audio 2.0
‫۳ (۹) ‫۲ (۸.۱) صدا ۲.۰ یا ۴.۰
‫۳ (۹) ۳ (۹) صوت ۴.۰

ارتقا دادن نسخه هدف FCM

درطول ارتقای تصویر فروشنده، فروشندگان همچنین می‌توانند نسخه FCM هدف را افزایش دهند تا نسخه FCM هدف را که تصویر فروشنده ارتقایافته می‌تواند با آن کار کند مشخص کنند. برای ارتقا دادن نسخه FCM هدف دستگاه، فروشندگان باید:

  1. همه نسخه‌های HAL الزامی جدید را برای نسخه FCM هدف پیاده‌سازی کنید.
  2. «نسخه‌های لایه انتزاع سخت‌افزار» را در فایل مانیفست دستگاه تغییر دهید.
  3. نسخه FCM هدف را در فایل مانیفست دستگاه تغییر دهید.
  4. نسخه‌های HAL منسوخ‌شده را بردارید.

برای مثال، دستگاه‌های Google Pixel و Pixel XL با Android 7.0 راه‌اندازی شدند، بنابراین نسخه FCM هدف آن‌ها باید حداقل قدیمی باشد. بااین‌حال، مانیفست دستگاه نسخه ۲ هدف FCM را اعلام می‌کند زیرا تصویر فروشنده به‌روز شده است تا با compatibility_matrix.2.xml مطابقت داشته باشد:

<manifest version="1.0" type="device" target-level="2">

اگر فروشندگان همه نسخه‌های جدید HAL موردنیاز را پیاده‌سازی نکنند یا نسخه‌های HAL منسوخ‌شده را حذف نکنند، نسخه FCM هدف را نمی‌توان ارتقا داد.

برای مثال، دستگاه‌های Google Pixel 2 و Pixel 2 XL نسخه هدف FCM‏ ۲ را دارند. درحالی‌که آن‌ها برخی‌از HALهای موردنیاز compatibility_matrix.3.xml (مانند audio 4.0،‏ health 2.0، و غیره) را پیاده‌سازی می‌کنند، android.hardware.radio.deprecated@1.0 را که در FCM نسخه ۳ (Android 9) منسوخ شده است برنمی‌دارند. بنابراین، این دستگاه‌ها نمی‌توانند نسخه FCM هدف را به ۳ ارتقا دهند.

الزامی کردن الزامات هسته درطول OTA

به‌روزرسانی دستگاه‌ها از Android 9 یا پایین‌تر

در دستگاه‌های دارای Android 9 یا پایین‌تر، مطمئن شوید که CLهای زیر انتخاب شده‌اند:

این تغییرات پرچم ساخت PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS را معرفی می‌کند و پرچم را برای دستگاه‌هایی که با Android نسخه ۹ یا پایین‌تر عرضه شده‌اند تنظیم‌نشده باقی می‌گذارد.

  • هنگام به‌روزرسانی به Android 10، کاربران OTA در دستگاه‌های دارای Android 9 یا پایین‌تر، الزامات هسته را در بسته OTA به‌درستی بررسی نمی‌کنند. این تغییرات برای حذف الزامات هسته از بسته OTA تولیدشده لازم است.
  • هنگام به‌روزرسانی به Android 11، تنظیم پرچم ساخت PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS برای بررسی سازگاری VINTF هنگام تولید بسته به‌روزرسانی اختیاری است.

برای کسب اطلاعات بیشتر درباره این پرچم ساخت، به به‌روزرسانی دستگاه‌ها از Android 10 مراجعه کنید.

به‌روزرسانی دستگاه‌ها از Android 10

‫Android 10 پرچم ساخت جدیدی را معرفی می‌کند، PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS. برای دستگاه‌هایی که با Android 10 راه‌اندازی شده‌اند، این پرچم به‌طور خودکار روی true تنظیم می‌شود. وقتی پرچم روی true تنظیم شده باشد، یک متن نسخه هسته و پیکربندی‌های هسته را از تصویر هسته نصب‌شده استخراج می‌کند.

  • هنگام به‌روزرسانی به Android 10، بسته به‌روزرسانی OTA شامل نسخه و پیکربندی هسته است. کاربران OTA در دستگاه‌های دارای Android 10 این اطلاعات را برای بررسی سازگاری می‌خوانند.
  • هنگام به‌روزرسانی به Android 11، تولید بسته OTA نسخه و پیکربندی هسته را می‌خواند تا سازگاری را بررسی کند.

اگر این دستورگان نتواند این اطلاعات را برای تصویر هسته شما استخراج کند، یکی از موارد زیر را انجام دهید:

  • نوشتار را ویرایش کنید تا از قالب هسته شما پشتیبانی کند و در AOSP همیاری کنید.
  • BOARD_KERNEL_VERSION را روی نسخه هسته و BOARD_KERNEL_CONFIG_FILE را روی مسیر فایل پیکربندی هسته ساخته‌شده .config تنظیم کنید. هنگام به‌روزرسانی تصویر هسته، هر دو متغیر باید به‌روزرسانی شوند.
  • یا PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS را روی false تنظیم کنید تا از بررسی پیش‌نیازهای هسته رد شوید. این کار توصیه نمی‌شود زیرا هرگونه ناسازگاری پنهان می‌ماند و فقط هنگام اجرای آزمایش‌های VTS پس‌از به‌روزرسانی کشف می‌شود.

می‌توانید کد منبع نوشتار استخراج اطلاعات هسته را extract_kernel.py مشاهده کنید.