Na lang wachten heeft de ontwikkelaar van het Xposed Framework officieel aangekondigd dat het project nu Android Nougat ondersteunt. Installeer Xposed-modules nu!
Naarmate het Android-ecosysteem in de loop der jaren volwassener is geworden, vinden steeds minder gebruikers redenen waarom ze hun apparaat zouden moeten rooten. Er is een groeiende trend waarbij gebruikers ervoor kiezen om op de standaardfirmware te blijven, omdat ze de ervaring bevredigend vinden of omdat ze geen game willen spelen. kat-en-muisspel met de SafetyNet API van Google. Maar als je begin 2016 aan een gebruiker zou vragen waarom hij of zij zijn telefoon had geroot, was de belangrijkste reden misschien wel dat hij of zij de telefoon kon rooten. installeer het Xposed Framework. Het is geweest meer dan een jaar sinds Android 7.0 Nougat werd voor het eerst uitgebracht, maar het lange wachten is eindelijk voorbij: officieel Xposed Framework voor Android Nougat is eindelijk beschikbaar.
Het afgelopen jaar XDA Senior Recognised Developer
We zagen een glimp van hernieuwde opwinding in het project toen ontwikkelaar abforce een ART-submodule voor AOSP 7.1.2, maar zoals onze eigen GermainZ opmerkt je kon beter wachten op het officiële Xposed Framework release omdat de implementatie van abforce vereiste dat het raamwerk in aangepaste ROM's moest worden geïntegreerd. Verder, deze onofficiële implementatie was onvolledig, wat leidde tot inconsistent of buggy-gedrag bij bepaalde Xposed Modules.
Hoewel abforce uitstekend werk heeft geleverd door zijn onofficiële Xposed werkend te krijgen op Android 7.1 Nougat, ging zijn implementatie in tegen rovo89's visie voor Xposed: dat het een stabiele oplossing moet zijn die een betrouwbaar en eenvoudig te gebruiken contract biedt voor gebruikers en ontwikkelaars gelijk. Wat we hiermee bedoelen is dat niet alleen modules probleemloos moeten werken voor gebruikers, maar ook de manier waarop modules worden ingesteld up moet consistent zijn onder gebruikers, zodat ontwikkelaars weten of een Xposed-module al dan niet verantwoordelijk is voor een app Botsing.
We hoeven ons geen zorgen meer te maken over problemen als rovo89 (na wat hulp van XDA Recognized Developer wanam) is nu klaar om een officiële update voor het Xposed Framework en Installer uit te brengen compatibiliteit met Android 7.0/7.1 Nougat. Dat betekent dat u geen aangepast ROM hoeft te installeren of hoeft te knoeien met het flashen van onstabiele versies geniet van Xposed: root gewoon je telefoon en installeer de nieuwste Xposed Installer-applicatie (hieronder gelinkt) en de Xposed Installer zal de magie van het installeren van Xposed voor u doen.
Xposed-installatieprogramma Bladeren door de modulerepository
Voor sommige mensen lijkt dit misschien een beetje laat, vooral omdat deze release er is ruim een maand nadat Android 8.0 Oreo werd uitgebracht. Houd er rekening mee dat maar heel weinig apparaten de komende maanden toegang zullen hebben tot een stabiele versie van Android Oreo. Android Oreo wel alleen op 0.2% van alle Android-apparaten (vergeleken met ~18% op Nougat) volgens de laatste statistieken van Google, maar veel van onze gebruikers zijn van het soort dat graag aangepaste ROM's installeert om op de hoogte te blijven.
Hoewel zelfs als u een onofficiële poort van Android 8.0 beschikbaar op een groot aantal apparaten op onze forums, veel van deze poorten hebben geen dagelijkse driverstatus. Dus tenzij je bereid bent honderden dollars uit te geven voor een gloednieuw exemplaar Google Pixel 2/2 XL, Sony Xperia XZ1/XZ1 Compact, of een aankomend apparaat zoals de Huawei Mate 10, dan kun je waarschijnlijk een aantal maanden gebruik uit Xposed Framework op Android Nougat halen.
Als dat op jou lijkt, ga dan naar de officiële forumthread voor de Xposed Installer en framework-zips om het op je Android Nougat-apparaat te laten werken.
Download Xposed Installer v3.1.2 (bijlage)
Xposed-installatieprogramma voor Nougat 7.0 (SDK24) downloaden
Xposed-installatieprogramma voor Nougat 7.1 (SDK25) downloaden
Voor de vele nieuwere gebruikers die niet zo bekend zijn met waar het Xposed Framework voor gebruikt kan worden of hoe het werkt, zal hieronder kort het Xposed Framework uitleggen, waarom je enthousiast zou moeten zijn, en waarom de ontwikkeling hiervan zo lang duurde deed.
Waarom het Xposed Framework installeren?
Wilt u aangepaste ROM-functies krijgen zonder een aangepast ROM te flashen? De moeder van alle Xposed-modules voor het aanpassen van je ROM, bekend als GravityBox, heeft u gedekt. Wilt u de weergave-instellingen per app aanpassen? Poging App instellingen. Hoe zit het met het aanpassen van bepaalde applicaties, zoals Hangouts? Of Instagram aanpassen zodat je dat kunt download de berichten die je leuk vindt?
Xposed geeft ontwikkelaars de mogelijkheid om vrijwel alles aanpassen wat ze willen—meestal gericht op individuele toepassingen, maar zelfs systeembrede functies kunnen worden gewijzigd. De voorbeelden die we hebben genoemd, zijn slechts het topje van de ijsberg. Het aantal extra functies dat u kunt toevoegen of apps die u kunt wijzigen is ongelooflijk; zoek gewoon door de officiële Xposed Module-repository om het zelf te zien. Houd er rekening mee dat sommige modules mogelijk moeten worden bijgewerkt voor deze nieuwe release en voor Nougat-ondersteuning, dus zorg ervoor dat u dit controleert voordat u ze op uw Nougat-ROM installeert!
Hoe werken Xposed-modules?
De essentie ervan is dat het Xposed Framework modules toestaat "aanhaken" bij de Java-methoden van elke toepassing—of het nu door de gebruiker is geïnstalleerd of een systeemtoepassing. Met Xposed kunnen modules hun eigen methoden uitvoeren voor, tijdens of in plaats van de oorspronkelijke methoden van de doeltoepassing.
Stel je bijvoorbeeld een methode voor die in de Gmail-applicatie wordt gebruikt en waarmee meldingen voor nieuwe e-mails worden geplaatst. Standaard maakt de methode een nieuwe melding met knoppen om de e-mail te archiveren/verwijderen of te beantwoorden. Er zou een Xposed-module kunnen worden gemaakt die op deze methode aansluit en een nieuwe knop toevoegt, zoals 'markeren als gelezen'. (Ja, dat is er daar is al een module voor.)
Het bovenstaande is een overdreven vereenvoudiging van het eindresultaat van wat het Xposed Framework zijn modules toestaat te doen. Het Framework zelf is ongelooflijk complex en zorgt ervoor dat het bijna universeel werkt op geroote apparaten (zonder dat er een aangepast ROM nodig is) en daarom heeft het zo lang geduurd voordat Xposed voor Android Nougat voltooid was.
Waarom duurt de ontwikkeling van Xposed zo lang?
De magie achter Xposed – waardoor Modules kunnen aansluiten op methoden van andere apps – vereist diepgaande kennis van hoe Zygote en de Android-runtime (KUNST) werkt. Deze vereisten weerhouden al een groot aantal mensen ervan om aan het project bij te dragen, maar het probleem wordt nog verergerd door het feit dat de rovo89 heeft de afgelopen 5 jaar de belangrijkste bijdrage geleverd aan Xposed.
Dat is de reden waarom oproepen tot open sourcing zijn wijzigingen aan Xposed sinds de laatste publieke release van Xposed hebben afgewezen. Het is zijn geesteskind, en hij is de beste in het begrijpen en aanpassen ervan, waardoor hij in zo'n laat stadium meer mankracht aan het project kan toevoegen. zou het project eenvoudigweg verder kunnen vertragen.
Plus, als rovo89 zijn bron voortdurend zou updaten, hij was bezorgd dat iemand de onvoltooide code zou gebruiken om een semi-functionerend Xposed Framework te bouwen zonder de universele Xposed Installer die daarbij hoort. (Dit gebeurde hoe dan ook met de abforce-implementatie, en de resulterende puinhoop van verschillende installatiemethoden rechtvaardigde de aarzeling van rovo89.)
Het beste wat we dus konden doen, was rovo89 de tijd geven om aan zijn lievelingsproject te werken. Xposed is niet zijn volledige of zelfs parttime baan. Het is gewoon een hobby, een hobby die hij al vijf jaar ten behoeve van de gemeenschap doet. Een zo complex project als Xposed heeft tijd nodig om te werken en vervolgens te testen; tijd die hij vanwege zijn andere verplichtingen niet vaak had. Voortgang was die het afgelopen jaar is gemaakt, net zoals rovo89 heeft gedocumenteerd in een paar van zijn openbare updates over dit onderwerp, totdat uiteindelijk zowel het Xposed Framework zelf als de Xposed Installer klaar zijn voor release.
Wat heeft rovo89 gedaan om Xposed werkend te krijgen in Nougat?
Nieuwe releases van Android brengen soms veranderingen met zich mee in de manier waarop ART werkt, waardoor mogelijk delen van Xposed moeten worden herwerkt. Android 7.0 Nougat introduceerde een Just-in-Time-compiler voor ART om bijvoorbeeld de runtime-prestaties van applicaties te helpen verbeteren. Maar het onofficiële Xposed Framework van abforce schakelt eenvoudigweg veel ART-optimalisaties uit, zodat method hooking correct kan werken.
De implementatie van rovo89 daarentegen bewaart alle ART-optimalisaties in Android Nougat door de aanroeper van een methode opnieuw te compileren met behulp van JIT en de methode nog steeds op zijn plaats te laten haken. Dat betekent dat u kunt genieten van de voordelen van een Xposed-module zonder dat dit ten koste gaat van de prestaties door ART-optimalisaties krachtig uit te schakelen.
Voor meer details over wat rovo89 heeft gedaan om eindelijk een betrouwbare hooking-methode te bereiken in Xposed voor Android Nougat, raden we je aan de onderstaande verklaring te lezen die hij ons heeft gegeven.
Volledige verklaring van rovo89
De kern van Xposed is uiteraard de mogelijkheid om Java-methoden te hooken, d.w.z. modules code voor, na of in plaats van deze methoden te laten uitvoeren. Vrijwel elke andere functionaliteit is hierop gebaseerd, dus het is van cruciaal belang dat deze altijd werkt zoals verwacht. Het algemene concept is hetzelfde sinds ik Xposed vijf jaar geleden uitvond; het vereist een verandering van het beginpunt van de methode. Dit begint te mislukken wanneer het toegangspunt niet wordt gecontroleerd tijdens de uitvoering - wat feitelijk het geval is bij sommige optimalisaties in ART.
Een voorbeeld hiervan is dat wanneer het toegangspunt al bekend is tijdens het compileren, bellers direct naar dit adres kunnen springen zonder het op te zoeken. Een ander voorbeeld is inlinen. Beschouw dit voorbeeld:
ART is slim genoeg om op te merken dat de methode tweemaal() heel eenvoudig is en daarom de logica rechtstreeks in de methode doSomething() insluit, zoals deze:
Je kunt nog steeds de methode tweemaal() hooken, maar deze wordt tijdens runtime niet meer vanuit doSomething() aangeroepen, en dat geldt ook voor je callback. KUNST is nog slimmer: het realiseert zich dat magie altijd 42 is en dat daarom nooit aan de voorwaarde kan worden voldaan. Dus de hele methode doSomething() is eigenlijk een no-op:
In eerdere versies schakelde Xposed deze optimalisaties volledig uit en dwong alles opnieuw te compileren. Dat bracht verschillende nadelen met zich mee. Allereerst doen de ART-ontwikkelaars fantastisch werk door de prestaties van hun optimalisaties, en het uitschakelen ervan leidt noodzakelijkerwijs tot minder prestaties (ik heb nooit gemeten hoeveel hoewel). Vervolgens is het opnieuw compileren zelf niet altijd gemakkelijk en heeft het mij, vooral in het begin, veel kopzorgen bezorgd. Ten slotte nemen de opnieuw gecompileerde bestanden ruimte in beslag, naast de vooraf gecompileerde bestanden op /system.
De niet-officiële versies voor Nougat schakelen deze optimalisaties ook uit, maar forceren de hercompilatie niet (omdat de port oorspronkelijk gemaakt was om in het ROM te worden geïntegreerd). Daarom worden hooks soms niet uitgevoerd.
Met de officiële versie kun je de geoptimaliseerde code behouden en toch betrouwbare hooks hebben. Hoe werkt dat? Welnu, Xposed registreert alle gesprekken die worden gevoerd. Dit gebeurt terwijl APK's worden gecompileerd, of in een aparte passage voor vooraf geoptimaliseerde code. Deze aanvullende gegevens nemen niet veel ruimte in beslag, maar stellen Xposed in staat om uit te zoeken waar een bepaalde methode mogelijk is inline. Dus als een methode is gekoppeld, worden alle bellers gedeoptimaliseerd, dat wil zeggen dat hun code niet meer wordt gebruikt. Dit zorgt ervoor dat de hook-callback zeker wordt gebeld. En als de beller intensief wordt gebruikt, wordt deze eenvoudigweg opnieuw gecompileerd met JIT, dit keer in de wetenschap dat de methode verslaafd is en dat sommige optimalisaties daarom niet van toepassing zijn. Dit betekent dat de effecten van aanhaakmethoden tot het absolute minimum worden beperkt. Jawel!
Ga nu je gang en probeer het uit. Zorg ervoor dat u Xposed Installer 3.1.2 gebruikt, omdat het configuratiepad moest worden gewijzigd om bestandsgebaseerde codering te ondersteunen.
Lees verder
Conclusie
We hopen dat je net zo enthousiast bent als wij over de release van Xposed voor Android 7.X Nougat. Het wachten was lang, maar onvermijdelijk gezien de enorme complexiteit van Xposed. Als u nog steeds niet zeker weet wat Xposed is of hoe het werkt, hoeft u zich geen zorgen te maken. Zeer weinig mensen (inclusief wij) begrijpen eigenlijk hoe het werkt. Ontwikkelaars zoals rovo89 doen hun best om hun werk te verpakken, zodat je niet echt hoeft te begrijpen wat er onder de motorkap gebeurt.
Vind je het Xposed Framework leuk? Overweeg om te doneren aan rovo89 voor het geweldige werk dat hij doet. Als je denkt dat je het in je hebt om bij te dragen aan het project, kijk dan eens op de GitHub-pagina van rovo89 hieronder.
Doneer aan rovo89
Draag bij aan Xposed
Op zoek naar Xposed-modules? Bekijk ons Xposed Framework Module-subforum of download de XDA Labs-applicatie en blader door onze verzameling Xposed-modules.
Xposed Modules-forum
XDA-labs downloaden
Android Oreo-vooruitgang
Mocht je het je afvragen: hier is de voortgang bij het verkrijgen van Xposed voor Android Oreo:
Ik ben al begonnen met werken op Android 8.0. Er zijn een paar nieuwe taalfuncties waar ik naar moet kijken, maar het algemene concept zou nog steeds moeten werken. Dat omvat al het werk aan het ongeldig maken van de gecompileerde code van eventuele bellers wanneer een methode is gekoppeld, wat veruit de meeste tijd kostte toen ik aan Nougat werkte. Ik heb er dus alle vertrouwen in dat ik deze keer veel sneller zal zijn. Android 8.1zou niet veel anders moeten zijn, dus ik verwacht er niet veel extra werk voor.