כיצד Android Go יכול לעזור לטלפונים ישנים יותר של אנדרואיד להפעיל את אנדרואיד 8.1 אוראו

Android Go היא הגרסה המופשטת של Google של אנדרואיד אוראו 8.1 עבור התקני זיכרון RAM חדשים וחסרי זיכרון. כפי שמתברר, זה עשוי לעזור לפיתוח ROM מותאם אישית גם במכשירים ישנים יותר.

Android Go היא הגרסה המופשטת של Google לאנדרואיד המבוססת על אנדרואיד 8.1 אוראו, והיא שואפת להיות גרסה אופטימלית של אנדרואיד למכשירים מתקדמים עם 1GBs של זיכרון RAM ומטה. זה הוכרז במאי האחרון בכנס Google I/O Developer, ו בסופו של דבר פרטים נוספים נחשפו בדצמבר מאוחר יותר באותה שנה. אמרו שהוא יוצר עבור הדור הבא של מכשירים ברמת הכניסה, כדי להבטיח כי אלה שנמצאים מדינות מתפתחות עדיין יכולות לעשות שימוש בסמארטפונים מתפקדים על מנת לגשת לאינטרנט ו להשתמש באפליקציות.

ל-Go יש מגוון רחב של אופטימיזציות ושיפורים לביצועים, כולל תופסת שטח אחסון של 50 אחוז פחות מהתקנת Android Oreo ממוצעת. גם הודות ל-Android Runtime (ART) ולאופטימיזציות של הליבה, מכשיר שמריץ Android Go יפעל, בממוצע, מהר יותר ב-15% מאשר בהתקנת Android Oreo רגילה באותו מכשיר. אופטימיזציות אלו מבוצעות באמצעות מספר תצורות בנייה מיוחדות שנעשו על ידי גוגל, עליהן נסביר בהמשך.

Android Go נהנה גם מיישומי "Go" מיוחדים, כגון Files Go, YouTube Go ו Google Maps Go. אלו הן גרסאות קלות משקל של יישומים מתוצרת גוגל, אשר צמצמו את הדרישות להפעלה יעילה יותר. משמעות הדבר היא שבעלי מכשירי Android Go יכולים ליהנות מרוב אותם היתרונות שגם משתמשי אנדרואיד אוראו רגילים יכולים, מה שהופך שימוש בחבילת היישומים של גוגל בלי צורך להוציא הרבה כסף על ספינת דגל או אפילו תקציב יקר יותר התקן.

זה הכל על גוגל להרחיב את השוק שלהם. עם זאת, עולה השאלה שאם אנדרואיד גו מורכבת בעיקר מתצורת בנייה וחבילה של אפליקציות Google מותאמות, האם מפתחים יכולים ליצור בעצמם בנייה משלהם של Android Go? בקצרה, כן אנחנו יכולים.

כמה מפתחי LineageOS כבר בונים ROM מותאמים אישית עם Android Go

אנו כבר רואים שיפור מסוים ב-Android Go מכמה מפתחי ROM מותאמים אישית, כגון על ידי XDA Recognized Developer AdrianDC, עם עבודתו על LineageOS 15.1 עם תצורות לבנות עבור Android Go כמה טלפונים ישנים של סוני. המכשירים המדוברים הם Sony Xperia SP, Sony Xperia T, Sony Xperia V ו-Sony Xperia TX. המכשירים הללו מתוארכים כולם לשנים 2012 ו-2013, אך הם יקבלו LineageOS 15.1 המבוסס על אנדרואיד 8.1 אוראו באמצעות אנדרואיד תצורת בניית Go, שעשויה לאפשר למכשירים להריץ אפליקציות Google 'Go' בצורה זורמת, אם בסופו של דבר מערכת Android Go של Gapps תהיה מְשׁוּחרָר.

כל מתחזק LOS אינדיבידואלי אמור להיות מסוגל להציג בנייה מוגדרת של Android Go, כשהיא קבוצה של תצורות בנייה ואופטימיזציות אחרות. המשמעות היא שמי שאולי רכש את ה- Sony Xperia T למשל, מכשיר עם אנדרואיד 4.0.4 Ice Cream Sandwich בהשקה, יוכל להשתמש ב- מבנה אופטימלי יותר של Android 8.1 Oreo במכשיר, תוך שימוש ביישומים כגון YouTube Go ו-Google Maps Go. זה לא הולך לרוץ ברמות דגל של ביצועים, אבל זה צריך להיות שָׁמִישׁ- במיוחד עבור מכשיר שראשיתו ב-2012.


כיצד Android Go יכול לעזור לטלפונים ישנים יותר של אנדרואיד להפעיל את אנדרואיד אוראו

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

תצורות ה-build המשמשות להידור של Android Go.

דיברתי עם XDA Recognized Developer יהושע, שעזר לי מאוד להבין את השינויים שהתרחשו - מה באמת גורם ל-Android Go לעבוד. חלק מתצורות הבנייה הללו לא ניתנות לשינוי ללא הידור מחדש, והן חלק מהתוכנית של ה-ROM עצמו. אלו הם הדגלים בעלי רישיות מלאה.

עם זאת, כל הדגלים הללו נוגעים להיבטים רבים ושונים של אנדרואיד הקשורים לאחסון ושימוש בזיכרון. אלו כוללים ניהול אחסון אוטומטי, קוטל הזיכרון הנמוך של אנדרואיד, ה-dex (דאלוויק לְשֶׁעָבַרקבצים שניתנים להפעלה) מייעל ומגבלות זיכרון RAM להפעלת אפליקציות. קבצי APK מורכבים מקבצי DEX אלה, כך שבדרך כלשהי, אפשר לחשוב על קובץ APK כפשוטו קובץ ZIP המכיל הרבה קובצי .dex, וזה למעשה מה ש-Android מריץ כאשר הוא מפעיל יישום. במקום זאת, ניהול אחסון אוטומטי נשלט על ידי אפליקציית Files Go, לא מערכת אנדרואיד.

Android Go Utilities מצב זיכרון RAM נמוך של אנדרואיד

באנדרואיד 4.4 KitKat, גוגל הציגה דגל חדש בשם "ראם נמוך", שנועדה לתמוך במכשירים עם 512MBs של זיכרון RAM. זה מבצע מספר אופטימיזציות למערכת. שינויים אלה מועילים מאוד להתקני זיכרון RAM נמוך יותר.

ניהול זיכרון משופר

  • תצורות ליבה שחוסכות זיכרון מאומתות: החלפה ל-ZRAM.
  • הרוג תהליכים מאוחסנים במטמון אם עומדים להיות לא מאוחסנים במטמון וגדולים מדי.
  • אל תאפשר לשירותים גדולים להחזיר את עצמם לשירותי A (כדי שהם לא יוכלו לגרום להרג המשגר).
  • הרג תהליכים (אפילו תהליכים שאינם ניתנים להרג, כמו ה-IME הנוכחי) שנעשים גדולים מדי בתחזוקה סרק.
  • הפעל את השקת שירותי הרקע בסידרה.
  • שימוש בזיכרון מכוון בהתקני זיכרון RAM נמוך: רמות התאמה הדוקות יותר מחוץ לזיכרון (OOM), מטמונים גרפיים קטנים יותר וכו'.

שינויים אלו לעיל בעצם מבטיחים שהמערכת מקפידה להשתמש בזיכרון RAM דחוס במידת האפשר, באמצעות שימוש ב-ZRAM. ZRAM הוא בעצם RAMdisk (אמצעי אחסון שמשתמש ב-RAM, הרבה יותר מהיר משימוש באחסון רגיל במכשיר) כקובץ החלפה. קובץ החלפה משמש כאשר השימוש ב-RAM גבוה ויישומים עדיין דורשים זיכרון. זה הרבה הרבה יותר איטי מ-RAM ויש להימנע ממנו במידת האפשר. בעצם, זה פשוט דוחס את תוכן הזיכרון.

זיכרון מערכת מופחת

  • חתוך תהליכי system_server ו-SystemUI (חסך מספר MBs).
  • טען מראש מטמונים של dex ב-Dalvik (שמר מספר MBs).
  • אפשרות ביטול JIT מאומתת (חוסך עד 1.5MB לתהליך).
  • מטמון גופנים מופחת לכל תהליך.
  • הציג את ArrayMap/ArraySet ונעשה בו שימוש נרחב במסגרת כתחליף קל יותר ל-HashMap/HashSet.

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

Android Go משתמש ב-Modified Low Memory Killer וב-dex אופטימיזציות

בהתחשב בכך ש-Android Go מיועד בעיקר למכשירים עם 1GB RAM או פחות, יהיה צורך בניהול זיכרון אגרסיבי יותר. Android Go משנה את ה-Low Memory Killer (LMK) בכמה דרכים שונות. ראשית, כאשר כמות גבוהה של זיכרון ה-RAM מנוצלת, הרוצח הזיכרון הנמוך עובר ל"לחץ קריטי" מדינה. הסיבה לכך היא שכאשר צריכת הזיכרון גבוהה, המערכת תהפוך להיות איטית עקב ניסיון מתמיד לגשת לקובץ החלפה באחסון המכשיר. שמירה על זיכרון RAM נקי תמנע מהמערכת את הצורך להשתמש בקובץ ההחלפה הזה ותמנע פגיעה בזיכרון. חבטת זיכרון מתרחשת כאשר זיכרון המכשיר מלא, וכל הזמן צריך לדפדף את קובץ ההחלפה באחסון המכשיר, מה שפוגע מאוד בביצועים.

השירותים ושירותי ה-WiFi מוגדרים ל"פרופיל מהירות," מה שאומר ששיטות נבחרות בשירותים אלה מורכבות מראש (AOT). (שיטה מתייחסת לקבוצת קוד שניתן לקרוא לה בכל נקודה בשם.) זה מפחית את השימוש ב-RAM ו אחסון, מכיוון שמערכת אנדרואיד לא תצטרך להרכיב מחדש באופן רציף שירותים חיוניים הפועלים על התקן. בינתיים, חבילות APK משותפות מוגדרות ל"מהיר", שנועד לתת חיי סוללה נוספים ומחזורי CPU נוספים על ידי אופטימיזציה של הוראות dex כדי לקבל ביצועים טובים יותר.

במונחים של אופטימיזציות של dex, Android Go עושה די הרבה. בתור התחלה, אחרי 10 ימים זה יקרה לשדרג לאחור אפליקציה אם לא נעשה בו שימוש כדי לחסוך במקום. שדרוג לאחור כאן אינו מתייחס לכך שמספר הגרסה בפועל של האפליקציה יורד, אלא פירושו שה-dalvik_cache עבור האפליקציה יימחק. המטמון של Dalvik משמש כך שהמכשיר לא צריך להרכיב אפליקציות מחדש, במקום זאת, הוא אוסף רק את החלקים הנחוצים ביותר שלו ושומר אותם במטמון. השאר מורכב באמצעות מהדר Just in Time (JIT) כאשר האפליקציה מופעלת. עם זאת, אם היישום אינו בשימוש במשך 10 ימים, אזי גם החלקים החיוניים של היישום אשר נערכו מראש יוסרו. זה נעשה כדי לפנות מקום רב ככל האפשר. שינוי פשוט נוסף הוא אי מתן אפשרות לשימוש ב-RAM של אפליקציה לעלות על 256MB כך שאפליקציה לא יכולה להשתמש בכל ה-RAM במכשיר.


האם Android Go הוא העתיד של פיתוח ROM מותאם אישית במכשירים מתקדמים?

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