Radi živite na vrhunskem robu, zato ste se vključili in namestili nove različice Googlovega predogleda za Android N. Če uporabljate programsko opremo kot svoj vsakodnevni gonilnik (morda imate radi, da se stvari zrušijo in zažgejo, kdo ve?), potem ste verjetno opazili, da veliko vaših najljubših aplikacij preprosto sploh ne deluje. Prenesli ste beta različico SuperSU Chainfire za Android N, da bi ublažili težave z boljšim nadzorom sistema, vendar se tudi številne korenske aplikacije pokvarijo. Zakaj? In kako jih je mogoče popraviti? Glede na Chainfire, razlog je v tem, da se Google odmika od škatla z orodjem proti škatla z igračami (in je že od Androida Marshmallow) in je zdaj odstranili nosilec za škatlo z orodjem podporo. Če ste imeli v preteklosti težave s korenskimi aplikacijami, ste verjetno že kdaj videli besedo "orodjarna". Če niste, naj vam Chainfire razloži, kaj je to:
Tri škatle v sistemu Android so toolbox, busybox in toybox. Ta polja nudijo izvedbe za različne osnovne ukaze Unix - podobne tistim, ki jih GNU Core Utils ponuja v različnih distribucijah Linuxa.
škatla z orodjem je bila do nedavnega standardna izvedba za Android. busybox je skoraj standardna škatla zunaj Androida, z licenco GPL in so jo mnogi prenesli v Android. škatla z igračami je alternativa z licenco BSD busybox ustvaril nekdanji busybox vzdrževalec. škatla z igračami prvič pojavil v Androidu v M in počasi nadomešča škatla z orodjem izvajanje za različne ukaze.
Te ukaze večinoma uporabljajo korenske aplikacije, skripti naprav in uporabniki lupine adb/terminalskega emulatorja.
Glede na to, zakaj ste verjetno že prej naleteli na težave, ki izhajajo iz toolboxa ali busyboxa, na Chainfire:
Številne korenske aplikacije morajo izvajati ukaze, ki jih ponujajo ta polja. Čeprav je osnovni ukaz na splošno enak, se bodo sprejeti parametri, natančno delovanje in izhod razlikovali med implementacijami in različnimi različicami teh implementacij.
V bistvu, ker nekatere vaše korenske aplikacije zahtevajo en poseben ukaz, ki ga lahko najdete v enem polju, druga aplikacija pa lahko zahteva drug poseben ukaz v drugem polju je veliko uporabnikov imelo težave pri pravilnem delovanju določenih korenskih aplikacij, ker njihova implementacija polja ni imela pravilnega ukazi. To povzroča glavobol razvijalcem, kot je Chainfire, ki se morajo ukvarjati z uporabniki, ki se sprašujejo, zakaj njihova aplikacija ne deluje. Večina uporabnikov ima verjetno eno implementacijo busybox nameščen, vendar lahko razvijalci pokličejo škatla z orodjem neposredno, namesto da bi upali, da ima vaša namestitev ustrezne ukaze z ustreznimi parametri, potrebnimi za delovanje njihove korenske aplikacije. Vendar je ta rešitev v sistemu Android N pokvarjena. Za Chainfire:
Na žalost v N Preview, nosilec za škatlo za igrače je zamenjal nosilec za škatlo z orodjem kot privzeta izvedba in še slabše, nosilec za škatlo z orodjem je bil odstranjen, zato se nanj ne morete vrniti. Medtem nosilec za škatlo za igrače zdi se, da se je znebil svoje sage o segfaultih, vendar dejansko še vedno ne deluje tako dobro. Niti približno tako dobro kot škatla z orodjem implementacijo, ki jo je vsaj nadomestil.
To je razlog, zakaj vaše korenske aplikacije v sistemu Android N ne delujejo. Chainfire je poskušal delno popraviti nekatere pokvarjene aplikacije, ki uporabljajo priljubljene oblike ukaza mount, tako da je uporabil popravek znotraj SuperSU 2.70, vendar ne bodo popravljene vse aplikacije. Če ste končni uporabnik, glede tega ne morete storiti ničesar, dokler razvijalec vaše priljubljene aplikacije ne izda posodobitve. Če ste razvijalec in se sprašujete, zakaj imajo uporabniki Androida N težave, ste bi moral prebrati celotno objavo Chainfire da dobite občutek, kako popraviti svojo aplikacijo.
Ali vam je kakšna korenska aplikacija odpovedala, ko ste uporabljali Android N? Sporočite vsem v spodnjih komentarjih (še posebej pa poskusite stopiti v stik z razvijalcem)!