בודקי Android N: הנה הסיבה שאפליקציות השורש שלך ממשיכות להיכשל

אתה אוהב לחיות בקצה המדמם, אז קפצת לסיפון והתקנת את רכיבי התצוגה המקדימים החדשים של Google ל-Android N. אם אתה מפעיל את התוכנה כמנהל ההתקן היומי שלך (אולי אתה אוהב שדברים קורסים ונשרפים, מי יודע?), סביר להניח ששמת לב שרבות מהאפליקציות האהובות עליך פשוט לא עובדות בכלל. הבזקת את הבטא SuperSU של Chainfire עבור אנדרואיד N כדי להפיג חלק מהסבל עם שליטה טובה יותר במערכת, אבל אפליקציות שורש רבות גם נשברות. למה? ואיך אפשר לתקן אותם? לפי Chainfire, הסיבה היא כי גוגל מתרחקת ארגז כלים לִקרַאת קופסת צעצועים (והיה מאז אנדרואיד מרשמלו), ויש עַכשָׁיו הוסר תושבת לארגז כלים תמיכה. אם היו לך בעיות עם אפליקציות שורש בעבר, כנראה שראית את המילה 'ארגז כלים' בעבר. אם לא עשית זאת, אני אתן ל-Chainfire להסביר מה זה:

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

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

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

פקודות אלה משמשות בעיקר על ידי אפליקציות שורש, סקריפטים של מכשיר ומשתמשי adb shell / אמולטור מסוף.

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

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

בעיקרון, מכיוון שחלק מיישומי השורש שלך דורשים פקודה ספציפית אחת שעשויה להימצא בתיבה אחת, אבל אפליקציה אחרת עשויה לדרוש פקודה ספציפית אחרת שנמצאה בתיבה אחרת, למשתמשים רבים היו בעיות בקבלת אפליקציות שורש מסוימות לתפקד כראוי, כי ליישום התיבה שלהם אין את כל האפשרויות פקודות. זה גורם לכאב ראש למפתחים כמו Chainfire שנאלצים להתמודד עם משתמשים שתוהים מדוע האפליקציה שלהם לא עובדת. לרוב המשתמשים יש כנראה יישום אחד של busybox מותקן, אבל מפתחים יכולים להתקשר ארגז כלים ישירות במקום לקוות להתקנה שלך יש את הפקודות המתאימות עם הפרמטרים הנכונים הדרושים ליישום השורש שלהם לתפקד. עם זאת, הדרך לעקיפת הבעיה נשברת ב-Android N. לכל שרשרת:

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

זו הסיבה שאפליקציות השורש שלך ב-Android N נכשלות. Chainfire ניסתה לתקן חלקית חלק מהאפליקציות השבורות המשתמשות בצורות פופולריות של פקודת ה-mount על ידי החלת תיקון בתוך SuperSU 2.70, עם זאת, לא כל האפליקציות יתוקנו. אם אתה משתמש קצה, אין שום דבר שאתה יכול לעשות בקשר לזה עד שהמפתח של האפליקציה האהובה עליך דוחף עדכון. אם אתה מפתח שתוהה מדוע משתמשים ב-Android N נתקלים בבעיות, אתה צריך לקרוא את הפוסט המלא של Chainfire כדי לקבל תחושה כיצד לתקן את האפליקציה שלך.


האם היו לך אפליקציות שורש נכשלות בזמן שאתה משתמש ב-Android N? ספרו לכולם בתגובות למטה (ובעיקר נסו להגיע למפתח)!