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

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

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

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

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

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

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

برای مثال، دستگاه‌هایی که با اندروید ۹ عرضه می‌شوند باید نسخه FCM هدف برابر با ۳ (نسخه بالاتر موجود در حال حاضر) داشته باشند. برای اعلام این مورد در مانیفست دستگاه:

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

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

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

ارتقاء HAL ها

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

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

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

نسخه FCM (سیستم) نسخه FCM تارگت (فروشنده) الزامات
۲ (۸.۱) ۲ (۸.۱) صدا ۲.۰
3 (9) ۲ (۸.۱) صدا ۲.۰ یا ۴.۰
3 (9) 3 (9) صدا ۴.۰

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

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

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

برای مثال، دستگاه‌های گوگل پیکسل و پیکسل ایکس‌ال با اندروید ۷.۰ عرضه شدند، بنابراین نسخه FCM هدف آنها باید حداقل legacy باشد. با این حال، مانیفست دستگاه، FCM هدف را نسخه ۲ اعلام می‌کند زیرا تصویر فروشنده برای مطابقت با compatibility_matrix.2.xml به‌روزرسانی شده است:

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

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

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

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

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

در دستگاه‌هایی با اندروید ۹ یا پایین‌تر، مطمئن شوید که CL های زیر گلچین شده‌اند:

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

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

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

به‌روزرسانی دستگاه‌ها از اندروید ۱۰

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

  • هنگام به‌روزرسانی به اندروید ۱۰، بسته به‌روزرسانی OTA حاوی نسخه کرنل و پیکربندی است. کلاینت‌های OTA در دستگاه‌هایی که اندروید ۱۰ را اجرا می‌کنند، این اطلاعات را برای بررسی سازگاری می‌خوانند.
  • هنگام به‌روزرسانی به اندروید ۱۱، فرآیند تولید بسته OTA، نسخه هسته و پیکربندی را برای بررسی سازگاری می‌خواند.

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

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

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