עדכונים ב-OTA

מחוץ לאריזה, Glass Enterprise לא מצויד לביצוע עדכונים (OTA). עם זאת, ניתן להגדיר עדכוני OTA בסיסיים. פונקציונליות העדכונים של EE2 OTA נותנת לבעלי המכשיר שליטה מלאה על עדכוני האוויר (OTA) באופן הבא:

  • כדי לקבוע איפה יישמר העדכון.
  • כדי לקבוע מתי יתבצע העדכון.
  • כדי לקבוע איזה build יטרגט את יעדי העדכון.

הגדרה

כדי לאפשר עדכונים של OTA במכשירי EE2, צריך הגדרות בצד השרת ובצד הלקוח.

תצורה בצד השרת

עליך לארח את קובץ העדכון של OTA כדי שתהיה אפשרות להוריד אותו בשרת נגיש ברשת שלך. צריך להוריד את קובץ העדכון מהדף תמונות של המערכת.

בנוסף, צריך לארח קובץ JSON שמעודד את תהליך העדכון. עליו להיות בפורמט הנכון כדוגמה ל- Updater example.json. הקובץ מכיל מידע כמו גודל המטען הייעודי, האורך הבינארי ומטא-נתונים נוספים שדרושים למנוע העדכון כדי לקבל את הקבצים הבינאריים של OTA.

הגדרה בצד הלקוח

כדי שהמכשיר יבדוק אם יש עדכונים ב-OTA, צריך להגדיר את כתובת ה-URL של OTA ואת מרווח הזמן של הסקרים. אפשר להשתמש ב-Intent כדי להתחיל פעילות בהגדרה הזו. שם הפעילות הוא com.google.android.glass.otaservice/.OtaSettingsActivity.

יש 2 פעולות נתמכות:

  • com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION
    • כתובת ה-URL של קובץ המטא-נתונים מסוג JSON שה-daemon בודק ובודק.
    • יש להוסיף מחרוזת עם המפתח הבא: com.google.android.glass.otaservice.UPDATE_LOCATION
  • com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION
    • מרווח הזמן שבו ה-daemon של ה-OTA יוצא ממצב שינה לסקר (באלפיות השנייה).
    • יש לצרף מספר עם המפתח הבא: com.google.android.glass.otaservice.UPDATE_FREQUENCY
    • כוונה זו מתחילה גם בדיקת OTA מיד אם אחת עוד לא מופעלת.
    • צריך להזין מספר גדול מ-900,000 אלפיות השנייה
    • אם OTA כבר מתבצע, מרווח התדירות מתעדכן אחרי שהבדיקה הנוכחית מסתיימת. חובה לעשות זאת, אחרת Android Doze עלול להפריע לשירות.

ניתן לשלוח את הכוונה באמצעות startActivityForResult. תגובה נשלחת בחזרה לשיחה onActivityResult עם RESULT_OK הצלחה או RESULT_CANCELLED במקרה של כשל. לאחר מכן, תוצמד הודעה ליומני המכשיר כדי לפתור את הבעיה.

אתם יכולים לשלוח כוונות גם באמצעות פקודות Adb באופן הבא:

adb shell am start \
-a com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION \
--es com.google.android.glass.otaservice.UPDATE_LOCATION "some_URL_for_json_file" \
-n com.google.android.glass.otaservice/.OtaSettingsActivity
adb shell am start \
-a com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION \
--el com.google.android.glass.otaservice.UPDATE_FREQUENCY 1800000 \
-n com.google.android.glass.otaservice/.OtaSettingsActivity

ה-daemon של ה-OTA פועל כ-JobService כל 15 דקות או יותר, בהתאם להגדרת התדירות. JobService פועל במהלך ההפעלה וממשיך לפעול עד לקבלת אישור ואימות של המטען הייעודי.

שירות הרקע בודק רק אם Wi-Fi מחובר ומחובר לאינטרנט. עם זאת, אין צורך בחיבור לאינטרנט דרך Wi-Fi אלא רק בחיבור LAN.

כל פעולות העיבוד מתבצעות ברקע. אין צורך בקלט משתמש במהלך העיבוד. תופיע התראה בחלונית ההזזה, ומערכת ההפעלה תעודכן באופן אוטומטי בפעם הבאה שתתבצע הפעלה מחדש.

עדכון השלבים

כך בודקים עדכוני OTA:

  1. להוריד את המכשיר ולהבליט אותו באופן ידני באמצעות עדכון נוכחי.
  2. כרטיס המידע על ההגדרות של Glass אמור להופיע: עדכון נוכחי.
  3. מתחברים לרשת Wi-Fi.
  4. ביצוע פקודות Adb כדי להצביע על קובץ ה-JSON לצורך עדכון לעדכון הבא:

    adb shell am start \
    -a com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION \
    --es com.google.android.glass.otaservice.UPDATE_LOCATION "your_json_file_location" \
    -n com.google.android.glass.otaservice/.OtaSettingsActivity
    adb shell am start \
    -a com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION \
    --el com.google.android.glass.otaservice.UPDATE_FREQUENCY 900000 \
    -n com.google.android.glass.otaservice/.OtaSettingsActivity
  5. מופיעה ההודעה לגבי OTA בתהליך
  6. התראת OTA נעלמת
  7. באתחול הידני הבא של המכשיר, המכשיר אמור להתעדכן וכרטיס המידע של הגדרות ה-Glass אמור להופיע: עדכון חדש

עדכון התהליך

זהו התהליך הסטנדרטי שבאמצעותו מתבצע עדכון ה-OTA:

  1. עם ההפעלה, ה-OTA daemon מתזמנ את הביצוע הראשון שלו, שנקבע לפי המרווח שצוין. אם לא צוין מרווח זמן, ברירת המחדל היא 15 דקות.
  2. ה-daemon בודק את שרת האינטרנט כדי להוריד את קובץ המטא-נתונים. אם לא סופקה כתובת URL, ה-daemon יוצא והמתין עד למרווח הביצוע הבא.
  3. ה-daemon מריץ בדיקות ראשוניות בקובץ המטא-נתונים כדי לוודא שהסימונים המתאימים הוגדרו. אם יש שגיאה, ה-daemon יוצא ומדפיס את הפלט ביומנים. ה- daemon ממתין לאחר מכן לביצוע המתוכנן הבא.
  4. ה-daemon משווה את הרשומות בקובץ ה-JSON עם הרשומות שנשלפות מה-build הנוכחי שפועלות במכשיר. אם זוהתה אי-התאמה באחד מהערכים האלה, תתחיל הורדה של OTA. תוכן מקובץ המטא-נתונים מועבר למנוע העדכון של AOSP.

    לא ניתן להשהות את העדכון. הוא ממשיך עד שהוא מצליח, נכשל או שתם הזמן הקצוב לתפוגה.

  5. ה-daemon מוריד את חבילת ה-OTA ברקע באופן אוטומטי.
  6. אם קובץ ה-OTA הורד ואומת בהצלחה, אפליקציית daemon מפסיקה לבקש עדכונים חדשים. לאחר ההפעלה מחדש, העדכון נכנס לתוקף בפועל. תופיע התראה כדי ליידע את המשתמש שהעדכון יופעל בפעם הבאה שתתבצע הפעלה מחדש.
  7. אם הורדת ה-OTA תיכשל, ה-daemon יסקר את שרת האינטרנט אחרי שיפוג הזמן הקצוב.

עדכוני אפליקציה

עדכוני אפליקציות ב-EE2 צריכים להיחשב כעדכונים רגילים ל-Android. יש שתי אפשרויות עיקריות:

  1. צריך להשתמש בפתרון MDM (ניהול מכשירים ניידים) או ליצור אפליקציה משלך לבעלי המכשיר ולעדכן את האפליקציה באופן שקט. לשם כך אפשר להשתמש ב-Android API PackageInstaller.
  2. יש להשתמש ב-Android API PackageInstaller ישירות מהאפליקציה כדי לעדכן אותה בעצמה. במקרה כזה תופיע תיבת דו-שיח של המערכת.