מדוע עדכוני אפליקציה שוברים לעתים את נושאי התשתית

click fraud protection

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

זה תופעה שכיחה: משתמשים מיישמים ערכות נושא של Substratum לטלפונים שלהם ואז מעדכנים מאוחר יותר את Slack, WhatsApp, Instagram או כל מספר אפליקציות אחרות מחנות Play. פתאום הם אפילו לא יכולים לפתוח את האפליקציות האלה עד ששכבות הנושא שלהם מושבתות. שפע של משתמשי Substratum החדשים יותר הביעו את חוויותיהם עם בעיה זו מאז השחרור של עיצוב תשתיות חסר שורש עבור אנדרואיד אוראו.

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

הבעיה היא בדרך כלל תוצאה של שילוב של גורמים: אפליקציית צד שלישי מקודדת בצורה גרועה, עדכונים תכופים ל אמרו אפליקציות שבעצם גורמות ליותר בעיות ממה שהן מתקנות, ומגבלות ב-Overlay Manager Service (OMS) מִסגֶרֶת. דיברתי עם כמה נושאים ידועים שסיפקו כמה תובנות חשובות לנושא:

ג'רמי בק, מי עושה את ספֵּקטרוּם נושא התשתית, ו דיוויד ווילסון שֶׁל שְׁלִיטָה פִּרסוּם.

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

לדוגמה, אפליקציה "מקודדת בצורה נתעבת" עשויה לקשור את צבע הטקסט לצבע הרקע בקובץ colors.xml שלה. אם ערכת נושא משנה את צבע הרקע כך שלא יהיה יותר לבן בדוגמה זו, הטקסט ישתנה ויכול להיות קשה יותר (או אפילו בלתי אפשרי) לקריאה. כתוצאה מכך, ה-themer יצטרך להוסיף קובצי xml פריסה משלהם לשכבות-העל שלו כדי לציין צבעים נפרדים עבור טקסט ורקע.

האזהרה היא שקובצי ה-XML החדשים צריכים לכלול גם כל תו בודד של קוד מקבצי האפליקציה המקורית באותו שם כך ששום פונקציונליות לא אובדת. הסיבה לכך היא ש-OMS קורא מהתחליף, הקובץ של ה-themer בזמן שהאפליקציה עצמה מנסה לעשות את כל מה שהקובץ המקורי איפשר. כאשר האפליקציה מתעדכנת ו נעשה אפילו השינוי הקטן ביותר שאינו קשור לקובצי ה-XML המקוריים, שכבות העל לא יעבדו.

הנה איך דוד מסביר את זה:

מה שה"מפתחים" המגוחכים האלה (אני משתמש במונח הזה באופן רופף כשאני מתאר את הליצנים האלה) עושים זה שהם משתמשים בפריטים ב פריסת xml שמקשה עלינו ליצור עיצוב נכון של האפליקציה מבלי להוסיף את פריסת ה-xmls לשכבת העל שלנו.

כדי לתת לך דוגמה, בואו ניקח WhatsApp ונסתכל על פריט ב-/res/values/colors.xml שלהם שהוא #ffffffff

הם משתמשים ב-@color/white הן לצבעי טקסט והן לצבעי רקע בכל האפליקציה שלהם. זה אומר שאם ערכת נושא רוצה לשנות את הצבע של "לבן" למשהו כהה כדי להפוך את הרקע שלו לכהה, אז זה יהפוך הרבה טקסט לכהה מדי וזה רע מאוד.

כדי לעקוף את החיסרון הזה, ערכות נושא יוסיפו את פריסת ה-xml לשכבת העל שלהם וישנו את צבע הטקסט או את צבע הרקע או את שניהם. להיות משהו כמו android: background="@color/white" למשהו כמו android: background="@*android: color/background_dark" כדי להפוך את הרקע לכהה.

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

עכשיו כאן טמונה הבעיה... אם ערכת עיצוב עושה שכבת-על שתתאים ל-WhatsApp 2.17.323 ועדכוני WhatsApp ל-2.17.351 (לדוגמה) אז אם WhatsApp בחוכמה האינסופית שלהם יחליטו לשנות השם של נגיד מחרוזת שהייתה בשכבת העל שנעשתה עבור 2.17.323 והמחרוזת הזו לא קיימת יותר ב-2.17.351 אז השכבה לא תצליח לִבנוֹת.

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

זוהי רק דוגמה אחת למשחק חתול ועכבר של עדכוני אפליקציות ונושא מתחלפים שעמם מתמודדים נושאי Substratum. כאשר בעלי נושאים תומכים במספר רב של אפליקציות צד שלישי, הם צריכים להכפיל את המשחק הזה פי כמה עם כל עדכון ערכת נושא. זהו מחזור בלתי פוסק של עמידה בקצב של מספר אפליקציות נתמכות ותקווה שמשתמשים מתוסכלים לא מדרגים את הנושאים שלהם בצורה גרועה בין עדכונים כי Slack (לדוגמה אחרת) דחף שלושה עדכונים לאפליקציה שלהם בשבועיים מאז העדכון האחרון של תומכי Slack האהובים עליהם נושא.

מה אתה יכול לעשות בנידון?

באופן אישי, אני בדרך כלל מחכה ל- עדכן לערכות הנושא האהובות עלי לפני שאני מעדכן אפליקציות שבהן אני משתמש שהם נושאים. עם זאת, לא לכל נושא יש את הזמן לדחוף עדכונים כל הזמן כדי להתעדכן בעדכוני האפליקציה האלה, כך שהקילומטראז' שלך עשוי להשתנות. אם אתה באמת לא יכול לסבול את השימוש באפליקציה במצב ללא נושא שלה, אז אולי המתנה של כמה שעות או ימים היא לא עניין גדול עבורך. אם זהו שובר עסקה, אז אולי תרצה לשנות רק יישומי מערכת שספק אם ישתנו בקרוב (כגון SystemUI או מסגרת Android).

רק שים לב שהבעיה אינה בגלל Substratum עצמה או ערכות נושא של Substratum, ובבקשה אל תאשים את מפתח ערכת הנושא כאשר משהו משתבש. זו הסיבה לכך שמנועי ערכת נושא בטעמי OEM של אנדרואיד כמו EMUI, Samsung Experience או LG UX לא מאפשרים לך ליצור עיצוב יותר מאשר אפליקציות מערכת וממשק המשתמש עצמו. כדי ליהנות מרמת ההתאמה האישית שמציעה Substratum, הפשרה היא שאולי תצטרך לחכות זמן קצר כדי ליהנות מעדכון האפליקציה האחרון.