Du älskar att leva i den blödande kanten, så du hoppade ombord och installerade Googles nya Android N-förhandsversioner. Om du kör programvaran som din dagliga drivrutin (kanske du gillar att saker kraschar och brinner, vem vet?) så har du förmodligen märkt att många av dina favoritappar helt enkelt inte fungerar alls. Du har flashat Chainfires SuperSU-beta för Android N för att lindra en del av eländet med bättre systemkontroll, men många rotappar går också sönder. Varför? Och hur kan de fixas? Enligt Chainfire, anledningen är att Google flyttar bort från verktygslåda mot leksakslåda (och har varit det sedan Android Marshmallow), och har nu tog bort verktygslåda fäste Stöd. Om du har haft problem med root-appar tidigare har du förmodligen sett ordet "verktygslåda" tidigare. Om du inte har det låter jag Chainfire förklara vad det är:
De tre lådorna på Android är verktygslåda, busybox och toybox. Dessa rutor tillhandahåller implementeringar för olika grundläggande unix-kommandon - liknande de som GNU Core Utils tillhandahåller på olika Linux-distributioner.
verktygslåda var tills nyligen standardversionen av Android. busybox är i stort sett standardboxen utanför Android, GPL-licensierad, och har porterats till Android av många. leksakslåda är ett BSD-licensierat alternativ till busybox skapad av en fd busybox underhållare. leksakslåda dök först upp på Android i M, och ersätter sakta verktygslåda implementering för olika kommandon.
Dessa kommandon används mestadels av root-appar, enhetsskript och adb-skal/terminalemulatoranvändare.
Angående varför du sannolikt har stött på problem som härrör från verktygslådan eller busybox tidigare, per Chainfire:
Många rotappar måste köra kommandon som tillhandahålls av dessa rutor. Även om baskommandot i allmänhet är detsamma, kommer de accepterade parametrarna, exakt bearbetning och utdata, att skilja sig mellan implementeringar och olika versioner av dessa implementeringar.
I grund och botten, eftersom vissa av dina rotappar kräver ett specifikt kommando som kan hittas i en ruta men en annan app kan kräva att ett annat specifikt kommando hittas i en annan box har många användare haft problem med att få vissa rotappar att fungera korrekt eftersom deras boximplementering inte har rätt till kommandon. Detta orsakar huvudvärk för utvecklare som Chainfire som måste hantera användare som undrar varför deras app inte fungerar. De flesta användare har förmodligen en implementering av busybox installerat, men utvecklare kan ringa verktygslåda direkt istället för att hoppas att din installation har de rätta kommandona med de rätta parametrarna som krävs för att deras rotapplikation ska fungera. Den här lösningen är dock bruten i Android N. Per kedjeeld:
Tyvärr, på N Preview, leksakslådsfäste har ersatt verktygslåda fäste som standardimplementering, och ännu värre, verktygslåda fäste har tagits bort, så du kan inte falla tillbaka till den. Medan leksakslådsfäste verkar ha blivit av med sin saga om segfaults, det fungerar fortfarande inte så bra. Inte alls lika bra som verktygslåda genomförandet som det åtminstone har ersatt.
Det är därför dina rotappar på Android N misslyckas. Chainfire har försökt att delvis fixa några av de trasiga appar som använder populära former av monteringskommandot genom att tillämpa en fix inom SuperSU 2.70, dock kommer inte alla appar att fixas. Om du är en slutanvändare, det finns inget du kan göra åt detta förrän utvecklaren av din favoritapp driver en uppdatering. Om du är en utvecklare som undrar varför användare på Android N har problem, kan du borde läsa Chainfires hela inlägg för att få en känsla för hur du fixar din app.
Har du haft några root-appar som misslyckats när du var på Android N? Låt alla veta i kommentarerna nedan (och försök särskilt att nå ut till utvecklaren)!