نرم افزار قابل به روز رسانی سند تعریف سازگاری Android (CDD) به دستگاه ها نیاز دارد تا کلاس SystemUpdatePolicy
را پیاده سازی کنند. SystemUpdatePolicy
به برنامه مالک دستگاه (DO) اجازه میدهد، در صورت وجود، نصب بهروزرسانیهای سیستم را کنترل کند.
به صاحبان دستگاه اطلاع دهید
سرویس گیرنده هوایی (OTA) باید با استفاده از API سیستم، برنامههای مالک دستگاه را از بهروزرسانیهای OTA دریافتی مطلع کند. سرویس گیرنده OTA همچنین باید زمانی که بهروزرسانی OTA برای اولین بار در دسترس قرار گرفت، دارای یک ضبط مهر زمانی باشد. سرویس گیرندگان OTA می توانند با DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)
تماس بگیرند تا به برنامه های مالک دستگاه اطلاع دهند. اگر سرویس گیرنده OTA نداند که آیا به روز رسانی یک وصله امنیتی است، مشتری OTA می تواند از DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
استفاده کند.
اگر یک بهروزرسانی در حال حاضر در دسترس نیست، مشتری OTA با تنظیم آرگومان updateReceivedTime
روی -1
این را گزارش میکند. توصیه می کنیم هر زمان که مشتری OTA از سرور OTA نظرسنجی می کند یا زمانی که یک OTA به مشتری ارسال می شود، اعلان ارسال کنید. همچنین می توانید اعلان ها را به دفعات بیشتر ارسال کنید.
خط مشی به روز رسانی سیستم
اندروید 9 توانایی کنترل بهروزرسانیها را برای دارندگان دستگاه افزایش میدهد و به دارندگان دستگاه اجازه میدهد بهروزرسانیهای OTA را تا 90 روز به تعویق بیاندازند. این ویژگی با تمرکز بر راهحلهای دستگاه اختصاصی (که قبلاً COSU نامیده میشد)، به دارندگان این امکان را میدهد تا نسخه سیستمعامل در حال اجرا بر روی دستگاهها را در دورههای بحرانی، مانند تعطیلات، متوقف کنند.
برای رعایت CDD، مشتری OTA باید سیاست های رفتاری را اجرا کند. DO می تواند خط مشی های زیر را تنظیم کند که باید توسط زیرسیستم های به روز رسانی سیستم دستگاه رعایت شود:
دارندگان دستگاه همچنین میتوانند دورههای توقف (در Android 9 یا جدیدتر) را تنظیم کنند که نسخه سیستم عامل را در دورههای بحرانی مانند تعطیلات یا دیگر زمانهای شلوغ ثابت کند. سیستم بهروزرسانیهای OTA را در طول دوره توقف نصب نمیکند. توصیه میکنیم از SystemUpdatePolicy.InstallationOption
استفاده کنید (به بخش زیر مراجعه کنید)، با این حال مشتری OTA همچنین میتواند SystemUpdatePolicy.getFreezePeriods()
را برای بررسی اینکه آیا دستگاه در دوره انجماد قرار دارد تماس بگیرد.
پیاده سازی گزینه های نصب
Android 9 یک @SystemApi، SystemUpdatePolicy.InstallationOption
را معرفی می کند که برای مشتریان به روز رسانی سیستم طراحی شده است. SystemUpdatePolicy.InstallationOption
به عنوان یک کلاس بسته بندی برای سیاست ها و دوره های توقف عمل می کند. با توجه به خط مشی به روز رسانی فعلی سیستم یا هر دوره توقفی که ممکن است تنظیم شود، یک گزینه نصب به مشتریان می گوید که چگونه روی به روز رسانی های ورودی سیستم عمل کنند و این عمل تا چه مدت معتبر است. گزینه نصب می تواند یکی از موارد زیر باشد:
-
TYPE_INSTALL_AUTOMATIC
- بهروزرسانیهای سیستم دریافتی بلافاصله و بدون دخالت کاربر به محض در دسترس قرار گرفتن نصب میشوند. دستگاه به طور خودکار راه اندازی مجدد می شود. -
TYPE_POSTPONE
- بهروزرسانیهای دریافتی سیستم میتواند حداکثر 30 روز به تعویق بیفتد. کاربران نمی توانند به روز رسانی را به صورت دستی نصب کنند. سازندگان دستگاه می توانند انتخاب کنند که آیا وصله های امنیتی را مسدود کنند یا خیر. -
TYPE_PAUSE
- بهروزرسانیهای سیستم دریافتی را میتوان تا اطلاع ثانوی بهطور نامحدود به تأخیر انداخت. کاربران نمی توانند به روز رسانی را به صورت دستی نصب کنند.TYPE_PAUSE
همه بهروزرسانیها، از جمله وصلههای امنیتی را به تأخیر میاندازد.
مشتریان به روز رسانی سیستم می توانند SystemUpdatePolicy.InstallationOption
با استفاده از SystemUpdatePolicy.getInstallationOptionAt(long when )
پرس و جو کنند، که when زمان زمانی را نشان می دهد که گزینه نصب به تعداد میلی ثانیه از Epoch درخواست می شود. با استفاده از روش SystemUpdatePolicy.getInstallationOptionAt(long when )
، کلاینت های به روز رسانی سیستم می توانند بر روی گزینه بازگشتی تا زمان سپری شدن زمان موثر عمل کنند. پس از اتمام گزینه بازگشتی، مشتری می تواند با استفاده از یک مهر زمانی جدید، برای آخرین گزینه، یک پرس و جو دیگر ایجاد کند.
سرویس گیرنده بهروزرسانی سیستم باید به DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED
گوش دهد.ACTION_SYSTEM_UPDATE_POLICY_CHANGED در صورتی که کل خطمشی بهروزرسانی شود.
خطمشی TYPE_PAUSE را تأیید کنید
میتوانید بهطور دستی تأیید کنید که گزینه TYPE_PAUSE
روی یک سیستم OTA کار میکند.
خط مشی TYPE_PAUSE در حال اجرا است
برای تأیید یک خطمشی TYPE_PAUSE
کار میکند:
- یک خط مشی خودکار تنظیم کنید و
TYPE_PAUSE
مشخص کنید. - در حالی که ساعت سیستم در دوره توقف است، به روز رسانی OTA را فشار دهید.
- بررسی کنید که دستگاه بهروزرسانی OTA را دریافت نمیکند و کاربر نمیتواند بهروزرسانی را بهصورت دستی نصب کند.
- اگر دستگاه یک دستگاه A/B است، دستگاه را راهاندازی مجدد کنید و بررسی کنید راهاندازی مجدد باعث نصب خودکار بهروزرسانی نشده باشد.
خط مشی TYPE_PAUSE منقضی شده است
برای تأیید یک خطمشی TYPE_PAUSE
منقضی شده کار میکند:
- یک خط مشی خودکار تنظیم کنید و
TYPE_PAUSE
مشخص کنید. - در حالی که ساعت سیستم در دوره توقف است، به روز رسانی OTA را فشار دهید.
- منتظر بمانید تا دوره توقف به پایان برسد.
- بررسی کنید که دستگاه به طور خودکار راه اندازی مجدد شود و به روز رسانی OTA پس از راه اندازی مجدد گرفته شود.