תוכנה שניתן לעדכן לפי מסמך הגדרת התאימות (CDD) של Android דורשת מהמכשירים להטמיע את הכיתה SystemUpdatePolicy
. SystemUpdatePolicy
מאפשר לבעלי המכשיר (DO) להפעיל את האפליקציה, אם
יש שליטה בהתקנה של עדכוני מערכת.
שליחת התראות לבעלים של המכשירים
הלקוח בחיבור אלחוטי (OTA) חייב להודיע לאפליקציות של בעלי המכשיר על
עדכוני OTA נכנסים באמצעות ממשק API של מערכת. לקוח OTA צריך גם
כוללים תיעוד של חותמת הזמן כשעדכון ה-OTA התחיל לראשונה
זמינים. לקוחות OTA יכולים להפעיל את השיטה DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)
כדי להודיע לאפליקציות של בעלי המכשיר. אם לקוח ה-OTA לא יודע אם יש עדכון
הוא תיקון אבטחה, לקוח ה-OTA יכול לחזור ולהשתמש
DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
אם עדכון מסוים לא זמין כרגע, לקוח ה-OTA מדווח על כך על ידי הגדרת הארגומנט updateReceivedTime
לערך -1
.
מומלץ לשלוח התראות בכל פעם שלקוח ה-OTA מבצע סקרים בשרת ה-OTA, או כשמתבצעת דחיפה של עדכון OTA ללקוח. אפשר גם לשלוח
בתדירות גבוהה יותר.
המדיניות בנושא עדכוני מערכת
מערכת Android 9 משפרת את היכולת להשתמש במכשיר בעלים ל בקרה בכך שהיא מאפשרת לבעלי מכשירים לדחות עדכוני OTA למשך עד 90 ימים. התמקדות במכשיר ייעודי (לשעבר COSU) פתרונות, תכונה זו מאפשרת לבעלים להשהות את גרסת מערכת ההפעלה מכשירים במהלך תקופות קריטיות, כמו חגים.
כדי לעמוד בדרישות של CDD, לקוח ה-OTA צריך להטמיע מדיניות התנהגותית. משימות לביצוע יכולות להגדיר את כללי המדיניות הבאים, שחייבים להיות מכבדות את על ידי מערכות המשנה של עדכון מערכת המכשיר:
בעלי המכשירים יכולים גם להגדיר תקופות הקפאה (ב-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
שידורים חיים למקרה שכל המדיניות תעודכן.
אימות המדיניות TYPE_PAUSE
אפשר לוודא שהאפשרות TYPE_PAUSE
פועלת באופן ידני
במערכת OTA.
המדיניות TYPE_PAUSE נכנסה לתוקף
כדי לוודא שמדיניות TYPE_PAUSE
פועלת:
-
מגדירים מדיניות אוטומטית ומציינים את
TYPE_PAUSE
. - כששעון המערכת נמצא בתקופת ההשהיה, שולחים עדכון OTA.
- צריך לוודא שהמכשיר לא מבצע את עדכון ה-OTA ושהמשתמש לא ניתן להתקין את העדכון באופן ידני.
- אם המכשיר הוא מכשיר A/B, צריך להפעיל אותו מחדש ולאמת את ההפעלה מחדש לא גרמה להתקנה אוטומטית של העדכון.
פג התוקף של המדיניות TYPE_PAUSE
כדי לוודא שמדיניות TYPE_PAUSE
שפג תוקפה פועלת:
-
מגדירים מדיניות אוטומטית ומציינים את
TYPE_PAUSE
. - כששעון המערכת נמצא בתקופת ההשהיה, שולחים עדכון OTA.
- ממתינים עד שתקופת ההשהיה תסתיים.
- יש לוודא שהמכשיר יופעל מחדש באופן אוטומטי ושעדכון ה-OTA שבוצעו לאחר ההפעלה מחדש.