הסבר על Xposed Framework עבור נוגט ו-abforce תת-מודול

במאמר זה אנו חוקרים את ההבדלים בין מהדורת Xposed for Nougat הקרובה של rovo89 לבין היישום הנוכחי שזמין עבור Nougat.

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

רוצה לקבל את כל התכונות ש-ROM מותאם אישית מציע מבלי להזדקק לאחד?GravityBox אוֹXTouchwiz יעשה זאת. רוצה לשנות הגדרות מסוימות על בסיס אפליקציה, כמו שינוי DPI של אפליקציה ספציפית?הגדרות אפליקציה האם אתה מכוסה. הלוואי שמפתחי אפליקציה חשבו להוסיף תכונה ספציפית, כמו ש-Google מאפשרת לךהתאמה אישית של Hangouts או פייסבוק המאפשרת לךלהוריד פוסטים באינסטגרם שאתה אוהב? ובכן, אתה לא צריך כי Xposed נותן למפתחים את הכוח לשנות כמעט כל דבר שהם רוצה, בין אם זו תכונה כלל מערכת שתדרוש ROM מותאם אישית, או תיקון עבור מכשיר ספציפי יישום.

המסגרת של Xposed מגיעה עם יתרון גדול למפתחים, שהוא קלות הפיתוח (לעומת הצורך להדר AOSP עבור כוונון ROM, או הצורך לערוך קוד Smali). זה גם מביא יתרון עצום למשתמשים: נוֹחוּת, מכיוון שהוא כבר לא מאלץ אותם למצוא ולהבהב את ה-ROM שמספק כל תכונה שהם מחפשים (במקום זאת, הם יכולים לערבב ולהתאים מודולים עצמאיים) על גבי איזון היעד שלהם של יציבות ו ביצועים. זה גם עושה

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

הבעיה היחידה? בשל אופיו וכמות הזמן הפנוי, המפתח של Xposed (המפתח המוכר הבכיר שלנו,rovo89) יש, לעתים קרובות הוא מפגר אחרי מהדורות אנדרואיד.לקח בערך ארבעה חודשים להתעדכן לתמיכה בלוליפופ, ולוקח כשנה להגיע לנוגט. זה לא כל כך נורא כמו שזה נראה אם ​​חושבים על זה כמה משתמשי אנדרואיד באמת נמצאים על נוגט (בסביבות 13.5%, אם כי יש לזכור שחובבי אנדרואיד, קהל היעד של Xposed, נוטים גם יותר להיות בנוגט). עם זאת, זה עדיין יכול להיות די מעצבן לא להיות מסוגל להשתמש במודולי ה-Xposed האהובים עליך ולהיות עם גרסת האנדרואיד העדכנית והטובה ביותר בו זמנית.

כאשר קוד המקור של המסגרת Xposed זמין (לפחות עבור גרסאות יציבות ומשוחררות), מפתחעז החליט ללכלך את הידיים ולראות אם הוא יכול להעביר חלק מהשינויים של rovo89 לנוגט. בחירה בגישה שונה ופשוטה יותר, abforce התאימה למעשה את החלק של Xposed שבעצם עושה את הקסם לאחר ההתקנה, ואיפשר לכלול אותו בעת הידור ROM משלך (אחרי זה, דרכים אחרות לעקיפת הבעיה צצו). ניתן לטעון שגישה זו שונה מאוד מכיוון שהוא מתעלם מאחד מיתרונות הליבה של Xposed, שהוא זמין לכולם בקלות. עם זאת, כל התקדמות מתקבלת בברכה וראשים מרובים המתמודדים עם משימה יכולים להיות מועילים ולהציע תובנות חדשות. הנושא העיקרי, כפי שאנו רואים אותו, הוא המידע השגוי סביב הפיתוח הזה (מופץ על ידי כמה "מפתחים" אחרים וכמה בלוגים), כמו גם חלק מהתגובות של הקהילה. אני מקווה שמאמר זה יבהיר את התמונה כולה.


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

הכוח של Xposed נובע מתפיסה פשוטה: ניתן "לחבר" כל שיטה (השיטות הן הקטנות חלקים המרכיבים כל תוכנית) כדי שהקוד של מודול Xposed יבוצע לפני, אחרי או במקום זה. ניקח דוגמה פשוטה: נניח שאינסטגרם משתמשת בשיטה שנקראת "showMenuOptions" כשאתה לוחץ על כפתור התפריט, ושיטה זו מטפלת בהצגת כפתורי "דווח" ו"שתף". על ידי יצירת מודול Xposed, אתה יכול לשנות שיטה זו כדי להוסיף לחצן נוסף להורדת התמונה במקום לשתף אותה, למשל. השינויים יכולים לנוע בין שינויים פשוטים (למשל. יומן שינויים בחנות Play) לשיפוצים גדולים (כגון GravityBox, שמטרתו לספק את כל התכונות שיהיו ל-ROM מותאם אישית)!

זה הופך את Xposed לחזקה, אבל זה רק חלק מהמשוואה. החלקים האחרים הם צדדיות - או בעצם היכולת להשתמש ב-Xposed כמעט בכל מכשיר בחוץ (עם גרסת אנדרואיד נתמכת), וקלות שימוש. כל מה שהמשתמשים צריכים לעשות הוא לתפוס את המתקין, שעושה את הקסם שלו ומתקן את המערכת שלהם באופן דינמי כדי לשלב את Xposed. כדי להחיל מודול, אתה רק צריך להתקין אותו, להפעיל אותו ולאתחל מחדש. אין צורך בהתעסקות, אין צורך להבהב ROM מותאם אישית (במיוחד כאשר ROMs מותאמים אישית הם לא תמיד בחירה מעשית), אין צורך להסיר את ההתקנה של APK כדי להתקין אחר חתום עם חתימה אחרת. כל מה שאתה צריך זה root (אתה בהחלט יכול לקבל ROM מותאם אישית וזה הגיוני הרבה פעמים; אבל בעוד ש-Xposed יכול לספק את רוב הפונקציונליות ש-ROM מותאם אישית יכול לספק, זה גם מעבר לזה).

עם זאת, מאחורי הפשטות הזו מסתתרת עבודה רבה:

  1. עבור מפתחי מודולים, ה-API שסופק חייב להיות יציב ומובטח שיעבוד. המסגרת של Xposed לא יכולה להיכשל באופן אקראי עם שילובי ROM ו/או הוק מסוימים (למעט מקרים חריגים). במילים אחרות, אם למשתמש יש בעיה, בעיה זו צריכה להיות אשמתו של המשתמש (שלא התקנה/הפעלת משהו בצורה נכונה) או תקלת מפתח המודול (על כך שיש באגים ב- מודול). אבל זה צריך להיות כמעט בטוח שהמסגרת עצמה פועלת כמתוכנן, ואינה מקור השגיאות שישאירו את המשתמשים מתוסכלים ומפתחים מבולבלים.
  2. עבור משתמשים, המסגרת חייבת להיות קלה להתקנה במכשיר וב-ROM שלהם, לא משנה אם יש להם סמסונג שמריצה את הגרסה העדכנית ביותר של TouchWiz או Nexus עם LineageOS מותקן. מתקין Xposed מטפל בכל זה מאחורי הקלעים. יש צורך להקדיש לכך עבודה רבה כדי לבדוק את המתקין והמסגרת על מגוון מכשירים ושילובי ROM. נמצאו שגיאות, לעתים קרובות עקב יישומים שונים של יצרני OEM, ויש לתקן אותן כדי להבטיח אמינות לכל המשתמשים.
  3. גרסאות גדולות של אנדרואיד יכולות לפעמים להביא שינויים גדולים, מה שמצריך חשיבה מחודשת על חלקים מארכיטקטורת המסגרת כדי להתאים לשינויים הללו. לפעמים, הזדמנויות נוספות צצות גם עם גרסאות חדשות יותר, הדורשות קצת זמן נוסף כדי להשיג מוצר טוב יותר. כאשר ART הוצג לראשונה, למשל, לאחר ש-Xposed השביתה אופטימיזציות מסוימות כדי שה-hooking יוכל לעבוד כהלכה. במקרה של נוגט, המהדר בדיוק בזמן (JIT). מביא הזדמנות ללשמור על האופטימיזציות האלה.

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

מתוך מחשבה על האמור לעיל, החזון של rovo89 עבור Xposed הוא להיות פתרון יציב המספק חוזה אמין וקל לשימוש עבור משתמשים ומפתחים. הפילוסופיה שלו, למרות שאתה יכול לא להסכים איתה, היא פשוטה ומובנת: מוצר צריך להיות שוחרר כאשר הוא מוכן לשימוש כמתוכנן, שכן שחרורו לפני מוביל ליותר צרות מאשר יתרונות.


תת-מודול Xposed ART של abforce עבור נוגט

אנו לא ששים לקרוא לעבודה של abforce "נמל" או "Xposed לא רשמי", שכן זה לא מדויק ומטעה. כפי שראינו, ל-Xposed שני מרכיבים עיקריים:

  1. הליבה של המסגרת Xposed עצמה, המטפלת בקסם של שיטות hooking.
  2. מתקין Xposed, המבטיח שהמסגרת קלה להתקנה על כל המכשירים בצורה נכונה.

מה ש-abforce עשתה היה להעביר את קוד המרשמלו של rovo89 בחלק הראשון (מסגרת ה-Xposed בלבד) ל-Nougat, באופן שידרוש את אפיית השינויים תוך כדי קומפילציה של ה-ROM המותאם אישית. בנוסף לכך, חלקים קטנים (אך חשובים) רבים של המסגרת אינם מותאמים במלואם לנוגט. ככזה, התנהגות יכולה להיות לא עקבית ולמרות שהיא עובדת לרוב (אם כי לֹאלכל אחד), זה לא אמין. עבור מפתחי מודולים ומשתמשים, הסתמכות על יישום לא שלם ולא עקבי יהיה פשוט לספק חוויה רעה לכל הצדדים המעורבים, עם חלק מהמודולים אינם פועלים כלל או גורמים למכשיר לא לאתחל. בעוד שמשתמשים רבים עשויים להיות בסדר עם שיש משהו ולא כלום, נקודת המבט של המפתחים עדיין מובנת לחלוטין (במיוחד אם אתה לוקח בחשבון שסייגים לא עוצרים שאלות תמיכה מזויפות והתבכיינות).

(בנוסף לשתי הנקודות העיקריות לעיל, נצפה גם לשינויים נוספים במסגרת הרשמית והסופית של Xposed כדי לנצל את השינויים שהוצגו בנוגט.)

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


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

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

בעיה נוספת בתגובת הקהילה הייתה אי הבנה של אופי העבודה של abforce, כאשר רבים משבחים אותה כ-Xposed החדשה או מפרסמים אותה כנמל עבור נוגט. בעיה מרכזית עם זה הייתה עם "מפתחים" הממהרים להציע גרסאות ניתנות להבהב מבלי להבין (או לדאוג להם) את החסרונות, מכיוון שלא היו כתבי ויתור. מוצע בכלל בכמה שרשורים, כשחלקם אפילו מרחיקים לכת עד כדי קרדיט abforce ולא rovo89 (שעומד מאחורי הרוב המכריע של העבודה ב-Xposed) ואחרים תורמים.

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

[...] אני מאמין שעצם הדחיקת המצב הנוכחי לא תעזור לפרויקט. אולי היינו רואים "כמה" שחרור ממש מהר על ידי אנשים שמרכיבים את הקוד, רואים שזה נראה כך עובד מצוין ופרסם אותו בתור "הנמל שלהם", למרות הבעיות והדברים לעשות שהם לא היו מודעים להם שֶׁל. אז תקראו לי אנוכי, אבל לא הייתי רוצה לראות גרסה חצי גמורה שכזו.[מָקוֹר]

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


אנו מקווים שההסברים הללו פינו חלק מהספקות שלך והתייחסו לתפיסות מוטעות אפשריות שהיו לך. Xposed היה פרויקט מדהים שהגיע לחלק עצום מקהילת החובבים והפלאשים שלנו, ו-Xposed for Nougat אמור להיות עוד אבן דרך ענקית מלאה בהזדמנויות. עם מודולים כמו GravityBox כבר מציע תמיכה של נוגט, הפרויקט המוגמר של rovo89 יחזור לשורה של אפשרויות.


האם אתה מתרגש עבור Xposed ב-Nougat ROM שלך? ספר לנו בתגובות!