Etter lang ventetid har utvikleren av Xposed Framework offisielt annonsert at prosjektet nå støtter Android Nougat. Installer Xposed-moduler nå!
Ettersom Android-økosystemet har modnet gjennom årene, finner færre og færre brukere grunner til hvorfor de bør roote enheten sin. Det er en økende trend med brukere som velger å forbli på lagerfastvaren, enten fordi de finner opplevelsen tilfredsstillende eller ikke ønsker å spille en katt-og-mus-spill med Googles SafetyNet API. Men hvis du spurte en bruker tidlig i 2016 hvorfor de rootet telefonene sine, var kanskje den viktigste grunnen som ble gitt slik at de kunne installer Xposed Framework. Det har vært over et år siden Android 7.0 Nougat ble først utgitt, men den lange ventetiden er endelig over: offisielle Xposed Framework for Android Nougat er endelig tilgjengelig.
Gjennom det siste året har XDA Senior Recognized Developer rovo89, hovedutvikleren av Xposed Framework, har levert flereoppdateringer om fremdriften til Xposed Framework for Android Nougat. For noen er
ventetiden har vært tålelig mest på grunn av det store antallet tilleggsfunksjoner som Xposed Framework tilbyr i Android Marshmallow. Men mange andre har gått videre til et liv uten Xposed på enhetene sine.Vi så et glimt av fornyet spenning i prosjektet da utvikler abforce ga ut en ART-undermodul for AOSP 7.1.2, men som vår egen GermainZ påpeker du var bedre å vente på det offisielle Xposed Framework release as abforces implementering krevde at rammeverket ble integrert i tilpassede ROM-er. Dessuten, denne uoffisielle implementeringen var ufullstendig, noe som førte til inkonsekvent eller buggy oppførsel med visse Xposed Moduler.
Mens abforce gjorde en god jobb med å få sin uoffisielle Xposed til å fungere på Android 7.1 Nougat, gikk implementeringen hans imot rovo89s visjon for Xposed - at det skal være en stabil løsning som gir en pålitelig og brukervennlig kontrakt for brukere og utviklere like. Det vi mener med dette er at ikke bare moduler skal fungere problemfritt for brukere, men måten modulene er satt på opp bør være konsistent blant brukere slik at utviklere vil vite om en Xposed-modul har skylden for en app eller ikke brak.
Vi trenger ikke lenger å bekymre oss for slike problemer som rovo89 (etter litt hjelp fra XDA Recognized Developer wanam) er nå klar til å gi ut en offisiell oppdatering til Xposed Framework and Installer—bringer kompatibilitet med Android 7.0/7.1 Nougat. Det betyr at du ikke trenger å installere en tilpasset ROM eller må rote med blinkende ustabile versjoner nyt Xposed – bare rot telefonen din og installer den nyeste Xposed Installer-applikasjonen (lenket nedenfor) og de Xposed Installer vil gjøre magien med å installere Xposed for deg.
Xposed Installer som blar gjennom modullageret
Dette kan virke litt sent i noen sinn, spesielt siden denne utgivelsen kommer over en måned etter at Android 8.0 Oreo ble utgitt. Husk at svært få enheter vil ha tilgang til en stabil versjon av Android Oreo i mange måneder fremover. Android Oreo er bare på 0.2% av alle Android-enheter (sammenlignet med ~18 % på Nougat) ifølge den nyeste statistikken fra Google, men mange av brukerne våre er av typen som elsker å installere tilpassede ROM-er for å holde seg på spissen.
Selv om du installerer en uoffisiell port av Android 8.0 tilgjengelig på en myriade av enheter på forumene våre, mange av disse portene er ikke daglig driverstatus. Så med mindre du er villig til å betale ut hundrevis av dollar for en helt ny Google Pixel 2/2 XL, Sony Xperia XZ1/XZ1 Compact, eller en kommende enhet som Huawei Mate 10, så vil du sannsynligvis kunne presse flere måneders bruk ut av Xposed Framework på Android Nougat.
Hvis det høres ut som deg, kan du gå over til den offisielle forumtråden for Xposed Installer og rammeverk for å få den opp og kjøre på Android Nougat-enheten din.
Last ned Xposed Installer v3.1.2 (vedlegg)
Xposed Installer for Nougat 7.0 (SDK24) Last ned
Xposed Installer for Nougat 7.1 (SDK25) Last ned
For de mange nyere brukerne som ikke er like kjent med hva Xposed Framework kan brukes til eller hvordan det fungerer, vil kort forklare Xposed Framework nedenfor, hvorfor du burde være begeistret, og hvorfor utviklingen av dette tok så lang tid som det gjorde.
Hvorfor installere Xposed Framework?
Vil du få tilpassede ROM-funksjoner uten å blinke en tilpasset ROM? Moren til alle Xposed-moduler for å justere ROM-en din, kjent som GravityBox, har du dekket. Vil du tilpasse skjerminnstillingene per app? Prøve Appinnstillinger. Hva med å tilpasse visse applikasjoner som Hangouts? Eller endre Instagram slik at du kan last ned hvilke innlegg du liker?
Xposed gir utviklere muligheten til endre stort sett hva de vil— hovedsakelig rettet mot individuelle applikasjoner, men til og med systemomfattende funksjoner kan endres. Eksemplene vi listet opp er bare toppen av isfjellet. Antallet tilleggsfunksjoner du kan legge til eller apper du kan endre er utrolig – bare søk gjennom offisielle Xposed Module-depot å se selv. Husk at noen moduler kanskje må oppdateres for denne nye utgivelsen og for Nougat-støtte, så sørg for å sjekke før du installerer dem på Nougat ROM!
Hvordan fungerer Xposed-moduler?
Hovedpoenget er at Xposed Framework tillater moduler "krok" inn i Java-metodene til et hvilket som helst program– enten det er brukerinstallert eller en systemapplikasjon. Xposed lar moduler utføre sine egne metoder før, under eller i stedet for de opprinnelige metodene for målapplikasjonen.
Tenk deg for eksempel en metode som brukes i Gmail-applikasjonen som legger ut varsler for nye e-poster. Som standard oppretter metoden et nytt varsel med knapper for å arkivere/slette eller svare på e-posten. En Xposed-modul kan lages for å koble til denne metoden og legge til en ny knapp, for eksempel "merk som lest." (Ja, det er det allerede en modul for nettopp det.)
Ovennevnte er en overforenkling av sluttresultatet av det Xposed Framework lar modulene sine gjøre. Rammeverket i seg selv er utrolig komplekst og får det til å fungere nesten universelt på rotfestede enheter – uten å trenge en tilpasset ROM – er grunnen til at Xposed for Android Nougat har tatt så lang tid å fullføre.
Hvorfor tar utviklingen av Xposed så lang tid?
Magien bak Xposed – det som lar moduler koble seg inn i metoder for andre apper – krever dyp kunnskap om hvordan Zygote og Android Runtime (ART) fungerer. Disse kravene utelukker allerede et stort antall mennesker fra å bidra til prosjektet, men problemet forsterkes av det faktum at rovo89 har vært den viktigste bidragsyteren til Xposed de siste 5 årene.
Det er grunnen til at oppfordringer til åpen kildekode har blitt avvist. Det er hans hjernebarn, og han er den beste til å forstå det og endre det, så legge til mer arbeidskraft til prosjektet på et så sent stadium kan ganske enkelt forsinke prosjektet ytterligere.
Pluss, hvis rovo89 kontinuerlig oppdaterte kilden sin, han var bekymret at noen ville ta den uferdige koden for å bygge et semi-fungerende Xposed Framework uten den universelle Xposed Installer til å følge den. (Denne nøyaktige tingen skjedde uansett med den kraftige implementeringen, og det resulterende rotet av forskjellige installasjonsmetoder rettferdiggjorde rovo89s nøling.)
Dermed var det beste vi kunne gjøre å gi rovo89 tid til å jobbe med kjæledyrprosjektet sitt. Xposed er ikke hans fulle, eller til og med deltidsjobb. Det er rett og slett en hobby, en som han har gjort til fordel for fellesskapet i 5 år. Et så komplekst prosjekt som Xposed krever tid til å jobbe og deretter teste – tid som han ikke ofte hadde på grunn av sine andre forpliktelser. Framgang var som ble laget i løpet av det siste året, akkurat som rovo89 dokumenterte i noen av hans offentlige oppdateringer om problemet inntil endelig både selve Xposed Framework og Xposed Installer er klare for utgivelse.
Hva gjorde rovo89 for å få Xposed til å fungere i Nougat?
Nye utgivelser av Android gir noen ganger endringer i måten ART fungerer på, noe som kan kreve at deler av Xposed omarbeides. Android 7.0 Nougat introduserte en Just-in-Time-kompilator for ART for å forbedre kjøretidsytelsen til for eksempel applikasjoner. Men det uoffisielle Xposed Framework av abforce deaktiverer ganske enkelt mange ART-optimaliseringer slik at metodehooking kan fungere riktig.
I motsetning til rovo89s implementering beholder alle ART-optimaliseringer i Android Nougat ved å rekompilere en metodes oppringer ved å bruke JIT og fortsatt ha metoden på plass. Det betyr at du kan nyte fordelene med en Xposed-modul uten å ofre ytelsen ved å kraftig deaktivere ART-optimaliseringer.
For ytterligere detaljer om hva rovo89 gjorde for å endelig oppnå en pålitelig hooking-metode i Xposed for Android Nougat, anbefaler vi at du leser uttalelsen nedenfor som han ga oss.
Fullstendig uttalelse fra rovo89
Kjernen i Xposed er åpenbart dens evne til å koble Java-metoder, dvs. la moduler kjøre kode før, etter eller i stedet for disse metodene. Stort sett all annen funksjonalitet er basert på dette, så det er avgjørende at det alltid fungerer som forventet. Det generelle konseptet har vært det samme siden jeg oppfant Xposed for fem år siden, det krever at man endrer inngangspunktet til metoden. Dette begynner å mislykkes når inngangspunktet ikke er sjekket under utførelse - noe som faktisk er tilfellet med noen av optimaliseringene i ART.
Et eksempel er når inngangspunktet allerede er kjent på kompileringstidspunktet, kan innringere hoppe direkte til denne adressen uten å slå den opp. Et annet eksempel er inlining. Tenk på dette eksemplet:
ART er smart nok til å legge merke til at twoce()-metoden er veldig enkel og legger derfor inn logikken rett inn i doSomething()-metoden, slik:
Du kan fortsatt koble til twoce()-metoden, men den vil ikke kalles fra doSomething() lenger under kjøring, og det vil ikke tilbakeringingen din. KUNST er enda smartere: Den innser at magi alltid er 42 og at betingelsen derfor aldri kan oppfylles. Så hele doSomething()-metoden er faktisk en no-op:
I tidligere versjoner pleide Xposed å deaktivere disse optimaliseringene fullstendig og tvang rekompilering av alt. Det kom med flere ulemper. For det første gjør ART-utviklerne en fantastisk jobb med å maksimere ytelsen med sine optimaliseringer, og deaktivering av dem fører delvis nødvendigvis til mindre ytelse (jeg har aldri målt hvor mye selv om). Da er rekompileringen i seg selv ikke alltid lett og forårsaket meg mye hodepine, spesielt i begynnelsen. Til slutt tar de rekompilerte filene plass, i tillegg til de forhåndskompilerte filene på /system.
De uoffisielle versjonene for Nougat deaktiverer også disse optimaliseringene, men de tvinger ikke rekompileringen (fordi porten opprinnelig ble laget for å bli integrert i ROM). Derfor kan det hende at kroker ikke blir utført noen ganger.
Med den offisielle versjonen får du beholde den optimaliserte koden og fortsatt ha pålitelige kroker. Hvordan fungerer det? Vel, Xposed registrerer alle samtalene som blir gjort. Dette skjer mens APK-er kompileres, eller i et eget pass for forhåndsoptimalisert kode. Disse tilleggsdataene tar ikke mye plass, men de lar Xposed finne ut hvor en bestemt metode kan ha vært innebygd. Så når en metode er koblet til, vil alle dens oppringere deoptimeres, det vil si at koden deres ikke blir brukt lenger. Dette sikrer at hook-tilbakekallingen definitivt vil bli kalt. Og hvis den som ringer er mye brukt, vil den ganske enkelt bli rekompilert med JIT, denne gangen med visshet om at metoden er hektet og derfor noen av optimaliseringene ikke gjelder. Dette betyr at effekten av krokmetoder reduseres til et minimum. Jippi!
Nå kan du prøve det. Sørg for å bruke Xposed Installer 3.1.2, da konfigurasjonsbanen måtte endres for å støtte filbasert kryptering.
Les mer
Konklusjon
Vi håper du er like hypet som vi er angående utgivelsen av Xposed for Android 7.X Nougat. Ventetiden har vært lang, men uunngåelig gitt den store kompleksiteten til Xposed. Hvis du fortsatt er forvirret om hva Xposed er eller hvordan det fungerer, ikke bekymre deg. Svært få mennesker (inkludert oss) forstår faktisk hvordan det fungerer. Utviklere som rovo89 gjør sitt beste med å pakke inn arbeidet sitt, slik at du egentlig ikke trenger å forstå hva som skjer under panseret.
Liker du Xposed Framework? Vurder å donere til rovo89 for det fantastiske arbeidet han gjør. Hvis du tror du har det som trengs for å bidra til prosjektet, sjekk ut rovo89s GitHub-side nedenfor.
Doner til rovo89
Bidra til Xposed
Leter du etter Xposed-moduler? Sjekk ut Xposed Framework Module-underforumet vårt eller last ned XDA Labs-applikasjonen og bla gjennom samlingen vår av Xposed-moduler.
Xposed Modules Forum
Last ned XDA Labs
Android Oreo Progress
I tilfelle du lurer, her er hvordan fremgangen er med å få Xposed for Android Oreo:
Jeg har allerede startet arbeidet med Android 8.0. Det er noen få nye språkfunksjoner som jeg må se på, men det generelle konseptet burde fortsatt fungere. Det inkluderer alt arbeidet med å ugyldiggjøre den kompilerte koden til alle innringere når en metode er koblet til, noe som tok desidert mest tid da jeg jobbet på Nougat. Så jeg er veldig sikker på at jeg kommer til å være mye raskere denne gangen. Android 8.1bør ikke være mye annerledes, så jeg forventer ikke mye ekstra arbeid for det.