Máte radi život na hranici, takže ste nastúpili a nainštalovali ste si nové ukážkové zostavy Google pre Android N. Ak používate softvér ako svoj každodenný ovládač (možno máte radi, že veci padajú a napaľujú, kto vie?), potom ste si pravdepodobne všimli, že mnohé z vašich obľúbených aplikácií jednoducho vôbec nefungujú. Flashli ste betu SuperSU od Chainfire pre Android N, aby ste zmiernili niektoré nešťastia pomocou lepšieho ovládania systému, ale mnohé root aplikácie sa tiež pokazia. prečo? A ako sa dajú opraviť? Podľa Chainfire, dôvodom je, že Google sa odkláňa nástrojov smerom k krabica na hračky (a bol od Android Marshmallow) a má teraz odstránený držiak skrinky na náradie podpora. Ak ste v minulosti mali problémy s koreňovými aplikáciami, pravdepodobne ste sa už stretli so slovom „toolbox“. Ak nie, nechám Chainfire vysvetliť, čo to je:
Tri boxy v systéme Android sú toolbox, busybox a toybox. Tieto boxy poskytujú implementácie pre rôzne základné unixové príkazy – podobné tým, ktoré GNU Core Utils poskytuje na rôznych distribúciách Linuxu.
nástrojov bola donedávna štandardnou implementáciou systému Android. busybox je do značnej miery štandardným boxom mimo Androidu, má licenciu GPL a mnohí ho preniesli na Android. krabica na hračky je BSD-licencovaná alternatíva k busybox vytvoril bývalý busybox udržiavateľ. krabica na hračky sa prvýkrát objavil na Androide v M a pomaly nahrádza nástrojov implementácia pre rôzne príkazy.
Tieto príkazy väčšinou používajú koreňové aplikácie, skripty zariadení a používatelia emulátora adb shell / terminálu.
Čo sa týka toho, prečo ste sa pravdepodobne už predtým stretli s problémami vyplývajúcimi z toolboxu alebo busyboxu, podľa Chainfire:
Mnoho koreňových aplikácií musí vykonávať príkazy poskytované týmito boxmi. Zatiaľ čo základný príkaz je vo všeobecnosti rovnaký, akceptované parametre, presná práca a výstup sa budú medzi implementáciami a rôznymi verziami týchto implementácií líšiť.
V podstate, pretože niektoré z vašich koreňových aplikácií vyžadujú jeden konkrétny príkaz, ktorý možno nájsť v jednom poli, ale iná aplikácia môže vyžadovať nájdenie iného špecifického príkazu v inom boxe má veľa používateľov problémy so správnym fungovaním určitých koreňových aplikácií, pretože ich implementácia boxu nie je v poriadku príkazy. To spôsobuje bolesť hlavy vývojárom, ako je Chainfire, ktorí sa musia vysporiadať s používateľmi, ktorí sa čudujú, prečo ich aplikácia nefunguje. Väčšina používateľov má pravdepodobne jednu implementáciu busybox nainštalovaný, ale vývojári môžu zavolať nástrojov priamo, namiesto toho, aby ste dúfali, že vaša inštalácia má správne príkazy so správnymi parametrami potrebnými na fungovanie ich koreňovej aplikácie. Toto riešenie však nefunguje v systéme Android N. Za požiar reťaze:
Bohužiaľ, na N Preview, držiak na toybox nahradil držiak skrinky na náradie ako predvolená implementácia, a čo je ešte horšie, držiak skrinky na náradie bol odstránený, takže sa k nemu nemôžete vrátiť. Zatiaľ čo držiak na toybox Zdá sa, že sa zbavil ságy segfaultov, v skutočnosti to stále nefunguje tak dobre. Ani zďaleka nie tak dobre ako nástrojov implementáciu, ktorú nahradila.
To je dôvod, prečo vaše koreňové aplikácie v systéme Android N zlyhávajú. Chainfire sa pokúsil čiastočne opraviť niektoré nefunkčné aplikácie, ktoré používajú populárne formy príkazu mount, a to použitím opravy v rámci SuperSU 2.70, avšak nie všetky aplikácie budú opravené. Ak ste koncový používateľ, nemôžete s tým nič robiť, kým vývojár vašej obľúbenej aplikácie nezatlačí aktualizáciu. Ak ste vývojár a zaujíma vás, prečo majú používatelia Androidu N problémy, vy mali by ste si prečítať celý príspevok Chainfire aby ste získali predstavu o tom, ako opraviť svoju aplikáciu.
Zlyhali vám nejaké koreňové aplikácie počas používania systému Android N? Dajte všetkým vedieť v komentároch nižšie (a hlavne skúste osloviť vývojára)!