Du elsker å leve i den blødende kanten, så du hoppet om bord og installerte Googles nye forhåndsvisningsbygg for Android N. Hvis du kjører programvaren som din daglige driver (kanskje du liker ting som krasjer og brenner, hvem vet?), så har du sannsynligvis lagt merke til at mange av favorittappene dine rett og slett ikke fungerer i det hele tatt. Du har flashet Chainfires SuperSU-beta for Android N for å lindre noe av elendigheten med bedre systemkontroll, men mange rotapper går også i stykker. Hvorfor? Og hvordan kan de fikses? Ifølge Chainfire, er grunnen fordi Google skifter bort fra verktøykasse mot leke boks (og har vært det siden Android Marshmallow), og har nå fjernet verktøykassefeste Brukerstøtte. Hvis du har hatt problemer med root-apper tidligere, har du sannsynligvis sett ordet "verktøykasse" før. Hvis du ikke har det, lar jeg Chainfire forklare hva det er:
De tre boksene på Android er verktøykasse, busybox og toybox. Disse boksene gir implementeringer for forskjellige grunnleggende unix-kommandoer - lik de GNU Core Utils gir på forskjellige Linux-distribusjoner.
verktøykasse var inntil nylig standard Android-implementering. busybox er stort sett standardboksen utenfor Android, GPL-lisensiert, og har blitt portert til Android av mange. leke boks er et BSD-lisensiert alternativ til busybox skapt av en tidligere busybox vedlikeholder. leke boks dukket først opp på Android i M, og erstatter sakte verktøykasse implementering for ulike kommandoer.
Disse kommandoene brukes for det meste av root-apper, enhetsskript og brukere av adb-shell/terminalemulatorer.
Angående hvorfor du sannsynligvis har støtt på problemer som stammer fra verktøykasse eller busybox før, per Chainfire:
Mange root-apper må utføre kommandoer gitt av disse boksene. Mens basiskommandoen generelt er den samme, vil de aksepterte parameterne, nøyaktig arbeid og utdata, variere mellom implementeringer og forskjellige versjoner av disse implementeringene.
I utgangspunktet, siden noen av rotappene dine krever en spesifikk kommando som kan finnes i en boks, men en annen app kan kreve en annen spesifikk kommando funnet i en annen boks har mange brukere hatt problemer med å få visse root-apper til å fungere ordentlig fordi boksimplementeringen deres ikke har all rett kommandoer. Dette forårsaker hodepine for utviklere som Chainfire som må forholde seg til brukere som lurer på hvorfor appen deres ikke fungerer. De fleste brukere har sannsynligvis én implementering av busybox installert, men utviklere kan ringe verktøykasse direkte i stedet for å håpe at installasjonen din har de riktige kommandoene med de riktige parameterne som er nødvendige for at rotapplikasjonen deres skal fungere. Denne løsningen er imidlertid brutt i Android N. Per kjedebål:
Dessverre, på N Preview, lekeboksfeste har erstattet verktøykassefeste som standardimplementering, og enda verre, verktøykassefeste er fjernet, så du kan ikke falle tilbake til den. Samtidig som lekeboksfeste ser ut til å ha kvittet seg med sagaen om segfaults, den fungerer fortsatt ikke så bra. Ikke på langt nær så godt som verktøykasse implementeringen den har erstattet, i det minste.
Dette er grunnen til at rotappene dine på Android N svikter. Chainfire har forsøkt å delvis fikse noen av de ødelagte appene som bruker populære former for monteringskommandoen ved å bruke en rettelse innenfor SuperSU 2.70, men ikke alle apper vil bli fikset. Hvis du er sluttbruker, er det ingenting du kan gjøre med dette før utvikleren av favorittappen din pusher en oppdatering. Hvis du er en utvikler som lurer på hvorfor brukere på Android N har problemer, kan du bør lese Chainfires hele innlegg for å få en følelse av hvordan du kan fikse appen din.
Har du hatt noen rotapper som mislyktes mens du var på Android N? Gi beskjed til alle i kommentarene nedenfor (og prøv spesielt å nå ut til utvikleren)!