Respin הוא תהליך של מיזוג מחדש, בנייה מחדש, בדיקה מחדש ואישור מחדש של קובץ בינארי אחרי פרסום ציבורי של ליבת GKI.
לפני שמבקשים ספין חוזר, חשוב לקרוא את ההנחיות הבאות.
דרישות סף ומחזור חיים
- תזמון: אפשר לבקש שינויים רק בענפי הפצה אחרי השקה ראשונית של גרסת build רבעונית לציבור. אפשר לבקש שינוי של בקשות ל-vendor-hooks או לתכונות אחרות רק עבור ענף של גרסה מסוימת, למשך שישה חודשים לכל היותר אחרי הפרסום הראשוני של הגרסה.
- אבטחה ו-LTS: אחרי שישה חודשים, אפשר ליצור גרסה חדשה להסתעפויות רק כדי לתקן באגים קריטיים או כדי להחיל תיקוני אבטחה שמופיעים בעדכון האבטחה של Android (ASB).
- הוצאה משימוש: אם ההסתעפות לא עומדת בדרישות LTS, שמוגדרות בעדכון האבטחה של Android (ASB), היא תוצא משימוש. לא נקבל בקשות ליצירת גרסאות (respin) להסתעפויות שהוצאו משימוש.
- תאריך ההוצאה משימוש של ענף גרסה מסוים של GKI מופיע בהערות הגרסה הרבעוניות של GKI בקטע Releases (גרסאות). לדוגמה, המהדורה מספטמבר 2025 נתמכת לשינויים חוזרים עד מרץ 2027. התאריך הזה משקף את משך החיים של גרסת הליבה LTS 2.0, שהוא 18 חודשים לגרסאות שיוצאות החל מספטמבר 2025 (לגרסאות שיצאו לפני ספטמבר 2025 היה משך חיים של 12 חודשים).
- היקף: אפשר לבקש ספינים חוזרים רק לתיקוני באגים דחופים, לעדכונים של רשימת הסמלים או להחלת תיקון לתיקון תכונה קיימת.
תקנים לשליחת תיקונים
כדי לעמוד בזמן הטיפול הצפוי בבקשה לשינוי גרסה (ESRT), כל התיקונים שנשלחים לענף של גרסה צריכים לעמוד בכללים הטכניים הבאים.
מקור מידע אמין ובחירה סלקטיבית
- קודם בענף הפיתוח: כל תיקוני האבטחה שמועברים לענף של הגרסה הרבעונית צריכים כבר להיות מיזוגים בענף הפיתוח הראשי של GKI. לדוגמה, אם נדרש תיקון בשביל ליצור גרסה חדשה של
android15-6.6-2025-08, התיקון צריך כבר להיות משולב ב-android15-6.6. - בחירת תיקונים נקייה: צריך לבחור תיקונים ישירות מענף הפיתוח. אין להשתמש בקוד מהסתעפות אחרת (Cherry-picking) מענפי גרסאות אחרים (לדוגמה, אין להשתמש בקוד מהסתעפות אחרת (Cherry-picking) מ-
2025-08ל-2025-09), כי זה עלול לגרום למידע על המחבר או על הקומיט להיות לא עקבי עם הגרסה בענף הפיתוח. לא יתקבלו תיקונים עם מידע לא עקבי. - שמירת מטא-נתונים: שמירת המטא-נתונים המקוריים של השליחה (לדוגמה, המחבר, חותמת הזמן המקורית). כדי לשמור את המטא-נתונים, משתמשים ב-
git cherry-pick -x.
שרשרת שמירות (commit)
- שרשרת רציפה: אם בקשת השינוי כוללת כמה תיקונים, צריך להעלות אותם כשרשרת רציפה אחת של קומיטים.
- מיקום של ABI ו-KMI: אם גרסה חוזרת של תיקון מרובה כוללת עדכונים של ממשק מודול ליבת מערכת ההפעלה (KMI) וממשק בינארי של אפליקציה (ABI) (לדוגמה, שינויים ברשימת הסמלים או עדכונים בקובץ XML/STG), צריך למקם את הקומיטים האלה בסוף שרשרת הקומיטים.
- שינוי בסיס: אם עורכים קומיט אב בשרשרת, צריך לשנות את הבסיס של כל תיקוני הצאצאים כך שיהיו מעל הגרסה האחרונה של תיקון האב כדי למנוע כשלים בבנייה.
- פתרון קונפליקטים: מוודאים שאין סמני קונפליקטים בתיקון.
- אימות בנייה: כל שרשרת הקומיטים צריכה להיבנות בהצלחה.
תגים נדרשים
ההתקדמות בבקשה ליצירת גרסה חדשה חסומה אם התגים הבאים לא מופיעים בהודעת השמירה:
-
Change-Id: חייב להיות זהה לערךChange-Idשל השינוי בענף הפיתוח.- חריג: אם התיקון מוזג עם ענף הפיתוח כחלק מעדכון LTS, הוא צריך להיות להשתמש בקוד מהסתעפות אחרת (Cherry-picking) של גרסת ה-LTS ומעוצב כתיקון
UPSTREAM. איך שולחים תיקונים לליבות נפוצות של Android
- חריג: אם התיקון מוזג עם ענף הפיתוח כחלק מעדכון LTS, הוא צריך להיות להשתמש בקוד מהסתעפות אחרת (Cherry-picking) של גרסת ה-LTS ומעוצב כתיקון
-
Bug(קיים): אסור להסיר תגיBug: XYZקיימים מהתחייבות של ענף פיתוח מקורי. -
Bug(respin): צריך להוסיף תגBug: XYZחדש, כאשר XYZ תואם למזהה הבאג שמשויך לבקשת ה-respin הנוכחית. - עדכון תג השליחה (commit tag) אם צריך: כשמבצעים cherry-picking של CL
מענף הפיתוח לענף ההפצה, וה-CL מתויג כ-
UPSTREAM, כדאי לשקול את התרחישים הבאים:- אם ה-CL חל בצורה חלקה על ענף הגרסה, לא צריך לבצע פעולות נוספות.
- אם ה-CL לא חל בצורה חלקה, צריך לפתור את הקונפליקטים, לעדכן את התג ל-
BACKPORTולתעד את הפעולות שבוצעו כחלק מפתרון הקונפליקטים. אפשר לעיין בדרישות לביצוע backport מ-mainline Linux.
UPSTREAM
עדיפות ו-ESRT
כדי לעזור לצוות GKI לתעדף את הבקשה, צריך להקצות לה עדיפות (דחיפות). העדיפות הזו עוזרת לצוות GKI לסייע לשותפים בזמן.
- לבקשות קריטיות או דחופות, צריך לסמן את העדיפות כ-P0.
- בבקשות מסוג P0 ו-P1, צריך גם להסביר למה הבקשה דחופה.
בטבלה הבאה מפורט מיפוי של עדיפות הבאג וזמן הפתרון (ESRT):
| עדיפות | ESRT |
|---|---|
| P0 | 2 ימי עסקים |
| P1 | 5 ימי עסקים |
| P2 | 10 ימי עסקים |
| P3 | 15 ימי עסקים |
מדיניות SLA
- צריך לשלוח בקשה נפרדת ליצירת גרסה חדשה לכל הסתעפות של גרסת הפצה.
- אם יש לכם שינויים בבקשה ליצירת גרסה חדשה שסומנה כבקשה שטופלה, אתם צריכים לשלוח בקשה חדשה ליצירת גרסה חדשה. אל תפתחו מחדש את הבקשה כדי להוסיף רשימות שינויים (CL).
- אם בקשה לשינוי ספין דורשת תגובה מכם, ולא תגיבו תוך שלושה ימי עסקים, רמת העדיפות תרד ברמה אחת. לדוגמה, P0 תרד ל-P1.
- אם לא תתקבל ממך תגובה במשך שבועיים, הבאג יסומן כבעיה שאי אפשר לתקן (לא רלוונטי).
שליחת בקשה ליצירת גרסה חדשה
הדיאגרמה הבאה מציגה את תהליך ההרצה מחדש. התהליך מתחיל כששותף ה-OEM (אתם) שולח את הבקשה לשליחת גרסת הסתעפות.
איור 1. תהליך ייצור מחדש (respin) דחוף.
כדי לשלוח בקשה לשינוי:
ממלאים את טופס הבקשה ליצירת GKI חדש ופונים מיד לאיש הקשר שלכם ב-Google.
- הטופס הזה יוצר באג של בקשת respin של GKI.
הכנת תיקונים:
- מוודאים שהתיקון מוזג עם ענף הפיתוח של GKI.
- מחילים את התיקון על ענף ההפצה המתאים של GKI.
- משנים את התיקון שנבחר כדי לכלול תג
Bug: XYZשמציין את מזהה בקשת הספין מחדש.
דוגמה: כדי לבצע cherry-pick של CL מ-
android16-6.12אלandroid16-6.12-2025-12:# 1. Checkout the target release branch git checkout android16-6.12-2025-12 # 2. Fetch the upstream development branch (Source of Truth) git fetch aosp android16-6.12 # 3. Cherry-pick the commit (Preserving metadata) git cherry-pick -x <commit_hash> # 4. Update the commit message to include the Respin Bug ID # (Do not remove existing Bug IDs or change the Change-Id)שולחים את הבאג. אחרי ששולחים את הבקשה, קורים הדברים הבאים:
תהליך הבדיקה אחרי שליחת בקשה:
- הצוות של Google GKI בודק את הבקשה ומאשר אותה או מקצה אותה בחזרה אליך אם נדרש מידע נוסף.
- אחרי שמסכימים על תיקון, צוות Google GKI מבצע בדיקת קוד של השינוי. הטיימר של ESRT פועל במהלך הבדיקה הזו. עם זאת, אם התיקון נדחה או שנדרשת עבודה מחדש, הטיימר של ESRT מתאפס.
- צוות GKI ממזג, בונה, בודק רגרסיה ומאשר את השינוי.
גרסה:
- הקובץ הבינארי מופץ בכתובת ci.android.com.
- מסגרת הזמן של ESRT מסתיימת וצוות Google GKI מסמן את הבקשה כבקשה שטופלה ומפנה אל גרסת ה-respin.
- גרסת ה-build של ה-respin מתפרסמת גם בדף גרסאות ה-build של Generic Kernel Image (GKI).