אפשר להשתמש בota_from_target_files
שסופק ב-build/make/tools/releasetools
כדי ליצור גרסה מלאה ומצטברת
חבילות OTA למכשירים שמשתמשים בעדכוני מערכת A/B או
עדכוני מערכת שאינם מסוג A/B. הכלי לוקח את
קובץ target-files.zip
שנוצר על ידי מערכת ה-build של Android כקלט.
במכשירים עם Android מגרסה 11 ואילך, אתם יכולים ליצור גרסת build חבילת OTA אחת לכמה מכשירים עם מק"טים שונים. כדי לעשות את זה, הגדרה של מכשירי היעד לשימוש בטביעות אצבע דינמיות ולעדכן את המטא-נתונים של ה-OTA כדי לכלול את המכשיר השם וטביעת האצבע ברשומות לפני ואחרי התנאי.
חבילות OTA מבוססות-קבצים של Android 8.0 שהוצאו משימוש למכשירים שאינם מסוג A/B, שחייבות להיות
במקום זאת, צריך להשתמש בחבילות OTA מבוססות-בלוק. שפת תרגום
יצירת חבילות OTA מבוססות-בלוקים או מכשירים עם Android מגרסה 7.x ומטה, אישור
האפשרות --block
לפרמטר ota_from_target_files
.
פיתוח עדכונים מלאים
עדכון מלא הוא חבילת OTA שמכילה את כל המצב הסופי של
המכשיר (מחיצות מערכת, הפעלה ושחזור). כל עוד המכשיר מסוגל
של קבלת החבילה ויישום שלה, החבילה יכולה להתקין את ה-build
בלי קשר למצב הנוכחי של המכשיר. לדוגמה,
פקודות משתמשות בכלי גרסה כדי לבנות את ארכיון target-files.zip
מכשיר tardis
.
. build/envsetup.sh && lunch tardis-eng
mkdir dist_output
make dist DIST_DIR=dist_output
make dist
יוצר חבילת OTA מלאה (ב-$OUT
). הקובץ .zip
שהתקבל
מכיל את כל מה שדרוש לבניית חבילות OTA למכשיר tardis
.
אפשר גם לפתח את ota_from_target_files
כקובץ בינארי של python ולקרוא לו
ליצור חבילות מלאות או מצטברות.
ota_from_target_files dist_output/tardis-target_files.zip ota_update.zip
הנתיב ota_from_target_files
מוגדר ב-$PATH
, והפיתון שמתקבל
הקובץ הבינארי נמצא בספרייה out/
.
ota_update.zip
מוכן לשליחה של מכשירי בדיקה (הכול חתום
במפתח הבדיקה). עבור מכשירי משתמשים, יש ליצור מפתחות פרטיים משלך ולהשתמש בהם בתור
שמפורטות במאמר חתימה על גרסאות build.
יצירת עדכונים הדרגתיים
עדכון מצטבר הוא חבילת OTA שמכילה תיקונים בינאריים לנתונים כבר במכשיר. חבילות עם עדכונים מצטברים בדרך כלל קטנות יותר כי הם לא צריכים לכלול קבצים שלא השתנו. בנוסף, כמו שהקבצים שהשתנו לרוב דומות מאוד לגרסאות הקודמות, החבילה צריכה לכלול רק קידוד של ההבדלים בין שני הקבצים.
אפשר להתקין חבילת עדכון מצטבר רק במכשירים שבהם
build של קוד המקור שמשמש להרכבת החבילה. כדי ליצור עדכון מצטבר,
נדרש הקובץ target_files.zip
מה-build הקודם (הזה הרצוי
כדי לעדכן מ-) וגם את הקובץ target_files.zip
מה-build החדש. עבור
למשל, הפקודות הבאות משתמשות בכלי גרסה כדי ליצור עדכון מצטבר
למכשיר tardis
.
ota_from_target_files -i PREVIOUS-tardis-target_files.zip dist_output/tardis-target_files.zip incremental_ota_update.zip
ה-build הזה דומה מאוד ל-build הקודם ולעדכון המצטבר
החבילה (incremental_ota_update.zip
) קטנה בהרבה
עדכון מלא (כ-1MB במקום 60MB).
מחלקים חבילה מצטברת רק למכשירים שפועלים בדיוק באותו האופן
ה-build הקודם ששימש כנקודת ההתחלה של החבילה המצטברת. עליך להבהב
התמונות בPREVIOUS-tardis-target_files.zip
או PREVIOUS-tardis-img.zip
(שניהם נוצרו באמצעות make dist
, כדי להבהב באמצעות fastboot update
), במקום
את היחידות שבתוך הספרייה PRODUCT_OUT
(שנוצרו באמצעות make
, שיישמר
מהבהב עם fastboot flashall
). מנסה להתקין את החבילה המצטברת
במכשיר עם תוצאות build אחרות, התקבלה שגיאת התקנה. כאשר
ההתקנה נכשלה, המכשיר נשאר באותו מצב עבודה (עם
מערכת); החבילה מאמתת את המצב הקודם של כל הקבצים שהיא מעדכנת
לפני שנוגעים בהם, כדי שהמכשיר לא יהיה במצב משודרג למחצה.
כדי ליהנות מחוויית המשתמש הטובה ביותר, מומלץ לעדכן באופן מלא כל 3-4 נתונים מצטברים זה עוזר למשתמשים להתעדכן בגרסה האחרונה ולהימנע ממשך זמן ארוך רצף התקנות של עדכונים מצטברים.
בניית חבילות OTA למספר מק"טים
מערכת Android מגרסה 11 ואילך תומכת בשימוש ב-OTA יחיד חבילה למספר מכשירים עם מק"טים שונים. כדי לעשות את זה צריך להגדיר מכשירי היעד להשתמש בטביעות אצבע דינמיות ועדכון המטא-נתונים של ה-OTA (באמצעות כלי OTA) כדי לכלול את שם המכשיר וטביעת האצבע לפני ואחרי רשומות של תנאי.
מידע על מק"טים
הפורמט של מק"ט הוא וריאציה של מערכת build משולבת
,
היא בדרך כלל קבוצת משנה לא מוצהרת של הפרמטרים הנוכחיים של build_fingerprint
.
יצרני ציוד מקורי יכולים להשתמש בכל שילוב של פרמטרים של גרסת build שאושרו על ידי CDD עבור מק"ט,
גם להשתמש בתמונה אחת בשביל המק"טים האלה. לדוגמה, במק"ט הבא יש
כמה וריאציות:
SKU = <product><device><modifierA><modifierB><modifierC>
modifierA
הוא רמת המכשיר (למשל, Pro, Premium או Plus)modifierB
הוא וריאציית החומרה (כמו רדיו)modifierC
הוא האזור, שיכול להיות כללי (למשל NA, אירופה, המזרח התיכון ואפריקה (EMEA) או CHN) או ספציפי למדינה או לשפה (למשל JPN, ENG או CHN)
יצרני ציוד מקורי רבים משתמשים בתמונה אחת עבור כמה מק"טים, ואז מפיקים את המוצר הסופי
שם המכשיר וטביעת האצבע שלו בזמן הריצה לאחר אתחול המכשיר. התהליך הזה
מפשט את תהליך הפיתוח של הפלטפורמה ומאפשר למכשירים עם
אבל גם שמות מוצרים שונים כדי לשתף תמונות נפוצות (כמו
tardis
וגם tardispro
).
שימוש בטביעות אצבע דינמיות
טביעת אצבע היא שרשור מוגדר של build
פרמטרים כמו
ro.product.brand
, ro.product.name
וגם ro.product.device
. טביעת האצבע
של המכשיר נגזר מטביעת האצבע של מחיצת המערכת ומשמש
המזהה הייחודי של התמונות (והבייטים) שפועלות במכשיר. כדי ליצור
טביעת אצבע דינמית, משתמשים בלוגיקה דינמית בקובץ build.prop
של המכשיר כדי
מקבלים את הערך של משתני תוכנת האתחול בזמן האתחול של המכשיר, ואז משתמשים בנתונים האלה
יצירה של טביעת אצבע דינמית למכשיר.
לדוגמה, כדי להשתמש בטביעות אצבע דינמיות במכשירים tardis
ו-tardispro
,
מעדכנים את הקבצים הבאים כפי שמוצג בהמשך.
מעדכנים את הקובץ
odm/etc/build_std.prop
כך שיכלול את השורה הבאה.ro.odm.product.device=tardis
מעדכנים את הקובץ
odm/etc/build_pro.prop
כך שיכלול את השורה הבאה.ro.odm.product.device=tardispro
מעדכנים את הקובץ
odm/etc/build.prop
כך שיכלול את השורות הבאות.ro.odm.product.device=tardis import /odm/etc/build_${ro.boot.product.hardware.sku}.prop
השורות האלה מגדירות באופן דינמי את שם המכשיר, טביעת האצבע
ro.build.fingerprint
על סמך הערך של
מאפיין תוכנת האתחול ro.boot.product.hardware.sku
(לקריאה בלבד).
עדכון מטא-נתונים של חבילת OTA
חבילת OTA מכילה קובץ מטא-נתונים (META-INF/com/android/metadata
)
מתאר את החבילה, כולל את התנאי המוקדם והתנאי המאוחר של ה-OTA
חבילה. לדוגמה, הקוד הבא הוא קובץ המטא-נתונים של חבילת OTA
מטרגט את המכשיר tardis
.
post-build=google/tardis/tardis:11/RP1A.200521.001/6516341:userdebug/dev-keys
post-build-incremental=6516341
post-sdk-level=30
post-security-patch-level=2020-07-05
post-timestamp=1590026334
pre-build=google/tardis/tardis:11/RP1A.200519.002.A1/6515794:userdebug/dev-keys
pre-build-incremental=6515794
pre-device=tardis
הערכים pre-device
, pre-build-incremental
ו-pre-build
מגדירים את הערכים של
צריך להגדיר את המכשיר כדי שאפשר יהיה להתקין את חבילת ה-OTA.
הערכים post-build-incremental
ו-post-build
מגדירים את מצב המכשיר
הצפוי אחרי התקנת חבילת OTA. הערכים של pre-
וגם
השדות post-
נגזרים ממאפייני ה-build התואמים הבאים.
- הערך
pre-device
נגזר מנכס ה-buildro.product.device
. - הערכים
pre-build-incremental
ו-post-build-incremental
נגזרים מנכס ה-buildro.build.version.incremental
. - הערכים
pre-build
ו-post-build
נגזרים נכס build אחד (ro.build.fingerprint
).
במכשירים עם Android מגרסה 11 ואילך, אפשר להשתמש ב-
הדגל --boot_variable_file
בכלי OTA כדי לציין נתיב לקובץ
מכיל את הערכים של משתני זמן הריצה ששימשו ליצירת
היא טביעת אצבע דינמית. לאחר מכן הנתונים משמשים כדי לעדכן את המטא-נתונים של ה-OTA כך שיכללו
שם המכשיר וטביעת האצבע בתנאים pre-
ו-post-
(באמצעות
קו אנכי | כתו מפריד). הדגל --boot_variable_file
כולל
התחביר והתיאור הבאים.
- תחביר:
--boot_variable_file <path>
- תיאור: מציין נתיב לקובץ שמכיל את הערכים האפשריים של
ro.boot.*
נכסים. משמש לחישוב טביעות האצבע הזמינות בסביבת זמן הריצה כאשר מאפייניro.product.*
מסוימים מבוטלים על ידי הצהרת הייבוא. הקובץ צריך לכלול מאפיין אחד בכל שורה, כאשר בכל שורה מופיעים הפרטים הבאים פורמט:prop_name=value1,value2
.
לדוגמה, כשהנכס הוא ro.boot.product.hardware.sku=std,pro
,
המטא-נתונים של OTA במכשירים tardis
ו-tardispro
מוצגים בהמשך.
post-build=google/tardis/tardis:11/<suffix>|google/tardis/tardispro:11/<suffix>
pre-build=google/tardis/tardis:11/<suffix>|google/tardis/tardispro:11/<suffix>
pre-device=tardis|tardispro
כדי לתמוך בפונקציונליות הזו במכשירים עם Android 10, אפשר לעיין בחומר העזר בנושא
.
רשימת השינויים הזו מנתחת באופן מותנה את ההצהרות import
בbuild.prop
שמאפשר לזהות שינויים במאפיינים ולשקף אותם
המטא-נתונים הסופיים של OTA.