SultanXDA מסביר גישת ROM מאוחדת ב-OnePlus 3/3T

פנינו ל-SultanXDA כדי לברר כיצד פועל ה-ROM והקרנל המאוחד שלו עבור ה-OnePlus 3/3T. המשך לקרוא כפי שאנו מגלים!

עוד כשסיקרנו את המפתח המוכר XDA Sultanxda שחרר את שלו CyanogenMod 13 ROM וקרנל מותאמים אישית עבור ה-OnePlus 3T, הרבה אנשים הופתעו לראות את "אותו" מבנה ה-ROM ששוחרר עבור ה-OnePlus 3T עושה את דרכו ל-OnePlus 3 (או להיפך!).

Sultanxda אימצה את הגישה המאוחדת להפצת ROM עבור ה- OnePlus 3 וה OnePlus 3T הודות לחומרה הדומה במידה רבה ולתוכנה ברמה נמוכה. המשמעות היא שה-ROM הציע תאימות צולבת בין שני המכשירים, כאשר אותו ROM zip יכול להיות מופץ לצמד. רוכסנים תואמים צולבים אפשרו למשתמשים (וגם למפתחים) לא לדאוג מהבהב של ה-zip השגוי בטעות וקבלת מכשיר לבנים. זה לא אומר שקל לבנות את ה-OnePlus 3/3T - זה רק כרוך בפחות כאבי ראש בסך הכל לכל הצדדים המעורבים.

פנינו למפתח מוכר של XDA Sultanxda לשפוך עוד קצת אור על ההליך כולו, כדי לעודד אימוץ לשיטתו. להלן הנקודות העיקריות מהשיחה עם דגש נוסף:

מה שונה ב-OnePlus 3/3T המאפשר רכיבי ROM מאוחדים?

הסיבה לכך ש-ROM מאוחד אפשרי היא בגלל ש-OnePlus איחדה את ה-BSP (הספריות הקנייניות) [חבילת התמיכה של הלוח]. למרות שאיחוד ליבה קל, איחוד ROM הוא בדרך כלל בלתי אפשרי עבור מפתחי [ROM] עקב חוסר עקביות ב-BSP שרק ה-OEM יכול לטפל בהם.

מצדי, כל מה שהייתי צריך לעשות זה לאחד את הליבה ולהפריד כמה תמונות קושחה של GPU. תמונות הקושחה של ה-GPU שונות בין ה-Snapdragon 820 ו-821, כך שהן אינן תואמות צולבות. שיניתי את הקרנל כדי להפוך אותו טען את קושחת ה-GPU הנכונה לכל מכשיר לתקן זאת. אז אני הוסיף את תמונות הקושחה המתאימות ל-ROM ב-commit הזה. שאר תמונות הקושחה הספציפיות למכשיר (כגון תמונות המודם) ממוקמות במחיצת קושחה בכל מכשיר, כך בעיית ה-GPU הייתה הבעיה היחידה שקשורה לקושחה שנתקלתי בה.

איך ה-ROM וה-Kernel מבינים באיזה מכשיר מדובר?

הקרנל יודע באיזה מכשיר הוא פועל הודות ל-bootloader. טוען האתחול בוחר את תצורת עץ ההתקנים (ארוזה בתמונת הליבה) התואמת את מזהה הלוח שלו ומעביר את זה תצורה על הליבה זה נותן לליבה גמישות לטעון את התצורות המתאימות הן עבור ה-OnePlus 3 והן עבור OnePlus 3T. אתה יכול למצוא את מזהה הלוח עבור OnePlus 3 וה OnePlus 3T על ידי ביצוע ההיפר-קישורים.

האם אתה צריך רק ליבה שונה כדי לתמוך בבנייה מאוחדת?

לא, ה-ROM חייב להיות מאוחד גם כן. OnePlus איחדה את ה-BSP החל מהגרסת הבטא הפתוחה עבור OP3, ושמרה אותו מאוחד במהדורה הרשמית של OP3T OxygenOS. משמעות הדבר היא ש-ROMs חייבים להשתמש בספריות קנייניות מ-OP3 של ה-Open Beta או מהגרסה הרשמית של OxygenOS של OP3T כדי להיות מאוחדים. יש גם את דרישת תמונת הקושחה של GPU שתיארתי למעלה, ומסך המגע של OP3T צריך לכלול קושחה גם ב-ROM (זה התווסף בקושמת ה-GPU שקישרתי אליה מֵעַל).

כמו כן, יש אזהרה לקרנל המאוחד: מפתחים חייבים להשתמש בליבה שלי (שכבר מאוחדת), או שהם חייבים להוסיף תמיכת OP3 לקרנל OxygenOS של OP3T. תמיכה ב-OP3T לא יכולה להתווסף פשוט לליבת ה-OP3 עקב תמיכה לא מלאה ב-Snapdragon 821, כך שאיחוד עשוי לדרוש עבודה רבה ממפתחי OP3 הנכונים. הליבה שלי כבר קיבלה תמיכה מלאה ב-Snapdragon 821 כשקיבלתי את ה-OP3T (מאחר הליבה שלי מבוססת על סניף Snapdragon 821 מ-CAF), כך שתהליך האיחוד היה די לא כואב עבורי.

אני בטוח שהרבה מפתחים יעדיפו להשתמש בליבת OxygenOS של OP3T ולא בליבה שלי, מה שידרוש הוספת תמיכה עבור OP3 אליו. לא בדקתי ליצור ליבה מאוחדת עבור OxygenOS ROMs, אז ייתכן שתידרש עבודה נוספת כדי לגרום לזה לקרות.

האם מפתחים אחרים יכולים להסתכל על הקוד ולראות איך זה נעשה?

כן. Sultanxda מזכיר שכל יצירותיו זמינות לציבור אצלו חשבון GitHub, כך שכל מי שיש לו את הידע הנדרש יוכל לראות כיצד בוצע איחוד ה-ROM. נכון, ההליך קצת מעורב ודורש רמת מומחיות, אבל זה תהליך מאוד של הגדר ושכח עם הטבות שמקורן בצורת תחזוקה מועטה יותר, פחות כפילות עבודה ושיפור תחושת ביטחון שאנשים לא יתבלבלו בין קבצים של שני המכשירים מכיוון שרק zip אחד עובד עבור שניהם. ברגע ש-ROM או ליבה מאוחדים ומאשרים שהם מתפקדים במלואם גם ב-OnePlus 3 וגם ב-OnePlus 3T, נדרשת מעט מאוד עבודה נוספת.


אנו מקווים שהבאנו מידע חדש שאמור לעזור למפתחים נוספים לבחור בבנייה מאוחדת עבור המכשירים. הפיתוח ב-OnePlus 3T הולך וגדל, ובנייה מאוחדת הם העתיד של שני המכשירים בעתיד.