Uofficielt Xposed Framework til Android 7.1 Nougat

En flashbar zip er nu tilgængelig, der bringer Xposed Framework til Android 7.1 Nougat ROM'er. Lynlåsen fungerer på OnePlus 3T såvel som mange andre telefoner!

Efter måneder efter måneders venten har vi endelig fået Xposed Framework-understøttelse til Nougat ROM'er (omend uofficielt). Takket være nogle talentfulde udviklere på vores helt egne XDA-fora, kan du nu installere Xposed Framework på en Android Nougat ROM gennem en flashbar zip.

Indtil nu så fremtiden for Xposed på Nougat lidt rystet ud. Rovo89 - udvikleren bag Xposed Framework - leverede en opdatering om support til Android Nougat for lidt mere end en uge siden. Rovo89 udtalte i det væsentlige, at der stadig var meget arbejde at gøre for at få Xposed til at fungere korrekt på Nougat, og at vi bare skulle være tålmodige.

Heldigvis ser det ud til, at vi har fået en midlertidig løsning til dem af os, der spændt har ventet på en pauseforanstaltning. PurifyOS-teamet greb ART-modulet, som udvikleren kraftig havde arbejdet på (og der blev skrevet om tidligere i dag

), og tilpassede den til at kunne installeres på andre brugerdefinerede ROM'er gennem en flashbar zip (i stedet for at skulle implementeres ved kompilering af ROM'en).

Der er i øjeblikket tre tilgængelige versioner til forskellige platforme, inklusive Xposed SDK25 ARM64, Xposed SDK25 ARM, og Xposed SDK25 x86. PurifyOS-teamet har testet denne nye version af Xposed med en OnePlus 3T, der kører OxygenOS baseret på Android 7.1, men den burde virke på andre telefoner, der kører Android Nougat, og brugere rapporterer allerede, at de har været i stand til at installere det på forskellige ROM'er og enheder. For eksempel har et par brugere på OnePlus 5 rapporteret, at det virker (ingen overraskelse, da det kører på OnePlus 3T helt fint), men en bruger, der kører en AOSP-baseret ROM til Samsung Galaxy S6, rapporterede også, at det virkede for dem.

Der vil være særheder at finde ud af, og ikke alle har formået at få det til at fungere indtil videre, med nogle brugere, der oplever force-lukninger og andre mærkeligheder. Men selvom dette er tilfældet, kan du stadig give det et skud, hvis du har ventet på ankomsten af ​​Xposed på Nougat lige siden den tidligere version af Android OS blev frigivet. Ikke alle eksisterende Xposed Framework-moduler vil fungere lige fra hånden, men nogle virkelig populære, såsom Amplify, er rapporteret at virke.

Sørg for at lave regelmæssige sikkerhedskopier og læs tråden omhyggeligt, inden du kaster dig ud, hvis du er i tvivl om, hvorvidt din enhed eller ROM understøttes. Sørg endelig for at bruge "søg"-funktionen, før du efterlader et dubletspørgsmål. Android O er måske lige rundt om hjørnet, men som man siger, "bedre sent end aldrig." Plus, mange brugere kommer ikke til at se Android O på deres enheder i et stykke tid, så Xposed burde være en god fornøjelse, så du ikke føler dig efterladt.


Opdatering: Rovo89s svar

Originalen udviklet bag Xposed Framework, XDA Senior Recognized Developer rovo89, har svaret på Github med sine tanker om denne seneste udvikling.

Ud fra min erfaring kan jeg fortælle dig, at det faktisk ikke er så svært at få det grundlæggende gjort, men det tager en helvedes tid for detaljerne. Det er ligesom 80-20-reglen, bortset fra at det er mere som 95-5 eller deromkring.

Den hooking-tilgang, jeg har designet til de tidligere udgivelser, er ret stabil og kan også anvendes til nyere udgivelser. Jeg antager, at du havde brug for det meste af tiden til at tjekke alle de steder, hvor IsProxyMethod() og IsDirect() kaldes og beslutter, om de skal overveje den nye metodemodifikator eller ej (dvs. brug parameter true eller ikke). Hvis du ikke gjorde det, er du måske gået glip af nogle steder, hvor de for nylig har introduceret sådanne opkald. Samme for metoder som InstallStubsForMethod(), som skal fungere på den originale originalmetode, selv når de kaldes for en hooked-metode. Du skal søge efter flere steder, hvor dette kunne være relevant. Det er stadig inden for rækkevidde af dage, men hvis du går glip af at gøre det, kan du se obskure nedbrud eller forkert opførsel, som er meget svære at fejlfinde.

Udover det tog du en tilgang, hvor kroge kun ville fungere korrekt for ROM'er, som er fuldstændigt kompileret fra bunden. På lager-ROM'er og endda de fleste brugerdefinerede ROM'er (der ikke inkluderede din port, mens du byggede) såvel som for alle apps, enheden måtte have kompileret før. Så du bliver nødt til at starte forfra med en slettet enhed, der kører en speciel ROM. Hvis ikke, så kan optimeringer (f.eks. inlining) forhindre en metode i overhovedet at blive kaldt, og derfor ville hooks ikke fungere. Det værste ved dette er, at den nøjagtige adfærd vil afhænge af ROM'en, eller endda hvordan brugeren bruger enheden (nu hvor apps er kompileret baseret på profiler). Moduler ville fejle tilfældigt, og moduludviklerne ville undre sig over, hvad de gjorde forkert (svar: ingenting). Hvis ikke alle forudsætningerne er opfyldt, er det en ret upålidelig API. Forestil dig, at Google har offentliggjort en opdatering, hvor OnClickListener af en knap blev ikke kaldt nogle gange, medmindre du kompilerede din ROM fra bunden... For mig personligt er dette en stor begrænsning.

Han fortsætter:

Det giver slet ikke mening at udgive flashbare ZIP-filer med dette, da porten kun er beregnet til at genkompilere en ROM fra bunden.

Og som jeg frygtede, der er ikke en eneste advarsel om, at dette er en ufuldstændig port, som ofte ikke vil opfylde API-kontrakten. 😠 Det er dårligt for udviklere og brugere, de burde i det mindste vide, at det er ufuldstændigt, så de kan beslutte, om de vil understøtte/bruge det. Jeg ville aldrig turde gøre sådan noget uden en stor fed advarsel. Faktisk, da jeg er ret perfektionistisk, ville jeg slet ikke udgive en ufuldstændig version, pålidelighed er meget vigtig for mig.

Jeg har lige tjekket min Git-log, og jeg havde den grundlæggende hooking (som i denne port) klar i oktober. Siden da har jeg arbejdet på at fjerne begrænsningerne. For at gøre det mere pålideligt på prækompilerede ROM'er kunne jeg også have porteret genkompileringsdelen, men det er stadig ikke ideelt. Som forklaret et sted ovenfor, har vi JIT nu, som giver os mulighed for at beholde alle optimeringer, kun ugyldiggør (og muligvis genkompilere) de metoder, der er direkte påvirket af hooking. Dette er ret udfordrende, da det er mere end blot kopiere og indsætte. Og indtil dette ikke er gjort, vil jeg ikke offentliggøre noget. 9 måneder for det (indtil nu) er virkelig lang tid, jeg ved det, men hey, det er min fritid og f.eks. på grund af flytning til en ny lejlighed, jeg kunne slet ikke arbejde på Xposed i flere måneder (!), og havde ellers kun meget begrænset tid.

Vi bør gøre det klart, at denne seneste udvikling ikke er den sande "Xposed", som I alle kender og elsker, men funktionelt giver de dig mulighed for at bruge nogle Xposed Framework-moduler lige nu på Android Nougat. Vi vil ikke bebrejde dig for ikke at vente på den officielle, mere stabile og mere kompatible version af Xposed Framework til Android Nougat, men vi ønsker at gøre det klart, at denne iteration blot er en stopforanstaltning beregnet til at tilfredsstille nogle brugeres behov. nu. Det er sandsynligvis ikke den måde, Xposed vil blive håndteret på i fremtiden.


Download uofficielt Xposed Framework for Nougat på XDA-fora