Officieel Xposed Framework voor Android Nougat is er - Download nu je favoriete modules!

Naarmate het Android-ecosysteem in de loop der jaren volwassen is geworden, vinden steeds minder gebruikers redenen waarom ze hun apparaat zouden moeten rooten. Er is een groeiende trend van gebruikers die ervoor kiezen om op de voorraadfirmware te blijven, hetzij omdat ze de ervaring bevredigend vinden, hetzij geen kat-en-muisspel willen spelen met de SafetyNet API van Google. Maar als je begin 2016 aan een gebruiker vroeg waarom ze hun telefoons hadden geroot, was de belangrijkste reden misschien dat ze het Xposed Framework konden installeren. Het is meer dan een jaar geleden sinds Android 7.0 Nougat voor het eerst werd uitgebracht, maar het lange wachten is eindelijk voorbij: het officiële Xposed Framework voor Android Nougat is eindelijk beschikbaar.

Het afgelopen jaar heeft Senior Recognized Developer rovo89, de hoofdontwikkelaar van het Xposed Framework, verschillende updates verstrekt over de voortgang van Xposed Framework voor Android Nougat. Voor sommigen was het wachten acceptabel, vooral vanwege het enorme aantal extra functies dat het Xposed Framework biedt in Android Marshmallow. Maar vele anderen zijn overgegaan naar een leven zonder Xposed op hun apparaten.

We zagen een glimp van hernieuwde opwinding in het project toen ontwikkelaar abforce een ART-submodule voor AOSP 7.1.2 uitbracht, maar zoals onze eigen GermainZ aangeeft, was het beter af te wachten op de officiële Xposed Framework-release omdat de implementatie van abforce vereist dat het framework geïntegreerd in aangepaste ROM's. Bovendien was deze niet-officiële implementatie onvolledig, wat leidde tot inconsistent gedrag of buggy met bepaalde Xposed-modules.

Hoewel abforce uitstekend werk heeft geleverd om zijn niet-officiële Xposed aan Android 7.1 Nougat te laten werken, druiste zijn implementatie in tegen de visie van rovo89 op Xposed - dat het een stabiele oplossing moest zijn die een betrouwbaar en gebruiksvriendelijk contract voor zowel gebruikers als ontwikkelaars zou bieden. Wat we hiermee bedoelen, is dat niet alleen modules zonder problemen voor gebruikers moeten werken, maar dat de manier waarop modules worden opgezet consistent moet zijn tussen gebruikers, zodat ontwikkelaars weten of een Xposed-module verantwoordelijk is voor een app-crash.

We hoeven ons geen zorgen meer te maken over problemen als rovo89 (na wat hulp van de erkende ontwikkelaar wanam) is nu klaar om een ​​officiële update voor het Xposed Framework en het installatieprogramma uit te brengen, wat compatibiliteit met Android 7.0 / 7.1 Nougat brengt . Dat betekent dat je geen aangepast ROM hoeft te installeren of met flitsende onstabiele versies hoeft te knoeien om van Xposed te kunnen genieten - gewoon je telefoon rooten en de nieuwste Xposed Installer-applicatie (hieronder gelinkt) installeert en de Xposed Installer doet de magie van het installeren van Xposed voor jou .

Xposed Installer Bladeren door de module repository

Dit lijkt sommigen misschien wat laat, vooral omdat deze release meer dan een maand na de release van Android 8.0 Oreo komt. Houd er rekening mee dat heel weinig apparaten nog vele maanden toegang hebben tot een stabiele versie van Android Oreo. Android Oreo is slechts op 0, 2% van alle Android-apparaten (vergeleken met ~ 18% op Nougat) volgens de nieuwste statistieken van Google, maar veel van onze gebruikers zijn het soort dat graag aangepaste ROM's installeert om op de rand te blijven.

Android-versiedistributie vanaf oktober 2017. Bron: Google

Hoewel, zelfs als je een onofficiële poort van Android 8.0 installeert die beschikbaar is op een groot aantal apparaten op onze forums, veel van deze poorten niet de status van dagelijks stuurprogramma hebben. Dus tenzij je bereid bent honderden dollars uit te geven voor een gloednieuwe Google Pixel 2/2 XL, Sony Xperia XZ1 / XZ1 Compact of een aankomend apparaat zoals de Huawei Mate 10, kun je waarschijnlijk knijpen enkele maanden gebruik van Xposed Framework op Android Nougat.

Als dat klinkt als jij, ga dan naar de officiële forumthread voor de Xposed Installer en framework-ritsen om het op je Android Nougat-apparaat te krijgen.

Xposed Installer v3.1.2 downloaden (bijlage)

Xposed Installer voor Nougat 7.0 (SDK24) downloaden

Xposed Installer voor Nougat 7.1 (SDK25) downloaden

Voor de vele nieuwere gebruikers die niet zo bekend zijn met wat het Xposed Framework kan worden gebruikt of hoe het werkt, zullen we hieronder het Xposed Framework kort uitleggen, waarom u enthousiast zou zijn en waarom de ontwikkeling hiervan zo lang duurde .


Waarom het Xposed Framework installeren?

Wilt u aangepaste ROM-functies krijgen zonder een aangepaste ROM te flashen? De moeder van alle Xposed-modules voor het tweaken van je ROM, bekend als GravityBox, heeft je gedekt. Wilt u de weergave-instellingen per app aanpassen? Probeer de app-instellingen. Hoe zit het met het aanpassen van bepaalde applicaties zoals Hangouts? Of Instagram aanpassen zodat je elke gewenste post kunt downloaden?

GravityBox-meldingscontrole

App instellingen

Xposed biedt ontwikkelaars de mogelijkheid om vrijwel alles te wijzigen wat ze willen - meestal gericht op individuele toepassingen, maar zelfs systeembrede functies kunnen worden aangepast. De voorbeelden die we opsommen, 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 in 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 controleer dit voordat u ze op uw Nougat ROM installeert!

Hoe werken Xposed-modules?

De kern ervan is dat het Xposed Framework het mogelijk maakt dat modules 'aansluiten' op de Java-methoden van elke toepassing, of deze nu door de gebruiker is geïnstalleerd of een systeemtoepassing. Met Xposed kunnen modules hun eigen methoden uitvoeren vóór, tijdens of in plaats van de oorspronkelijke methoden van de doeltoepassing.

Stel je bijvoorbeeld een methode voor die in de Gmail-toepassing wordt gebruikt om meldingen voor nieuwe e-mails te posten. Standaard maakt de methode een nieuwe melding met knoppen om de e-mail te archiveren / verwijderen of te beantwoorden. Er kan een Xposed-module worden gemaakt om aan deze methode te koppelen en een nieuwe knop toe te voegen, zoals 'markeren als gelezen'. (Ja, daarvoor bestaat al een module.)

Het bovenstaande is een over-vereenvoudiging van het eindresultaat van wat het Xposed Framework zijn modules toestaat te doen. Het Framework zelf is ongelooflijk complex en waardoor het bijna universeel werkt op geroote apparaten - zonder dat een aangepast ROM nodig is - is de reden waarom Xposed voor Android Nougat zo lang heeft geduurd om te voltooien.

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 (ART) werken. Deze vereisten beletten al een groot aantal mensen om bij te dragen aan het project, maar het probleem wordt verergerd door het feit dat de rovo89 de afgelopen 5 jaar de belangrijkste bijdrage aan Xposed heeft geleverd .

Dat is de reden waarom oproepen tot open sourcing zijn wijzigingen aan Xposed sinds de laatste publieke release van Xposed zijn geweigerd. Het is zijn geesteskind, en hij is het best in het begrijpen en wijzigen ervan, dus als je in zo'n laat stadium meer mankracht aan het project toevoegt, kan het project gewoon verder worden vertraagd.

Bovendien, als rovo89 zijn bron voortdurend bijwerkte, was hij bang dat iemand de onvoltooide code zou nemen om een ​​semi-functionerend Xposed Framework te bouwen zonder het universele Xposed-installatieprogramma. (Precies dit gebeurde sowieso met de abforce-implementatie, en de resulterende chaos van verschillende installatiemethoden rechtvaardigde de aarzeling van rovo89.)

Het beste wat we konden doen was dus rovo89 de tijd geven om aan zijn huisdierenproject te werken. Xposed is niet zijn volledige of zelfs parttime baan. Het is gewoon een hobby, een die hij al 5 jaar doet ten behoeve van de gemeenschap. Een project zo complex als Xposed heeft tijd nodig om te werken en vervolgens te testen - tijd die hij niet vaak had vanwege zijn andere verplichtingen. Het afgelopen jaar werd vooruitgang geboekt, net zoals rovo89 in enkele van zijn openbare updates over het probleem documenteerde totdat zowel het Xposed Framework zelf als het Xposed-installatieprogramma klaar zijn voor release.

Wat heeft rovo89 gedaan om Xposed aan het werk te krijgen in Nougat?

Nieuwe releases van Android brengen soms wijzigingen aan in de manier waarop ART werkt, waardoor delen van Xposed mogelijk opnieuw moeten worden bewerkt. Android 7.0 Nougat introduceerde een Just-in-Time-compiler voor ART om bijvoorbeeld de prestaties van applicaties tijdens runtime te verbeteren. Maar het onofficiële Xposed Framework van abforce schakelt eenvoudigweg veel ART-optimalisaties uit, zodat method hooking correct kan werken.

ART-optimalisaties in Android Nougat. Bron: Google

De implementatie van rovo89 daarentegen houdt alle ART-optimalisaties in Android Nougat door de beller van een methode opnieuw te compileren met JIT en de methodehaken nog steeds op zijn plaats te houden. Dat betekent dat u kunt genieten van de voordelen van een Xposed-module zonder in te leveren op prestaties door ART-optimalisaties krachtig uit te schakelen.

Voor meer informatie over wat rovo89 heeft gedaan om eindelijk een betrouwbare hooking-methode in Xposed voor Android Nougat te bereiken, raden we u aan de onderstaande verklaring te lezen die hij ons heeft gegeven.

Volledige verklaring van rovo89

De kern van Xposed is duidelijk de mogelijkheid om Java-methoden aan te sluiten, dat wil zeggen dat modules vóór, na of in plaats van deze methoden code kunnen uitvoeren. Vrijwel elke andere functionaliteit is hierop gebaseerd, dus het is van cruciaal belang dat het altijd werkt zoals verwacht. Het algemene concept is hetzelfde sinds ik Xposed vijf jaar geleden uitvond, het vereist het veranderen van het ingangspunt van de methode. Dit begint te mislukken wanneer het ingangspunt niet wordt gecontroleerd tijdens de uitvoering - wat eigenlijk het geval is met enkele van de optimalisaties in ART.

Een voorbeeld is wanneer het toegangspunt al bekend is tijdens het compileren, waarna bellers direct naar dit adres kunnen springen zonder het op te zoeken. Een ander voorbeeld is inline. Beschouw dit voorbeeld:

ART is slim genoeg om op te merken dat de methode tweemaal () erg eenvoudig is en daarom de logica direct in de methode doSomething () insluit, als volgt:

Je kunt nog steeds de methode tweemaal () vasthaken, maar deze wordt tijdens runtime niet meer vanuit doSomething () aangeroepen, en dus ook niet je callback. ART is nog slimmer: het realiseert zich dat magie altijd 42 is en daarom kan de voorwaarde nooit worden vervuld. Dus de hele doSomething () -methode is eigenlijk een no-op:

In eerdere versies gebruikte Xposed deze optimalisaties volledig en dwong alles opnieuw te compileren. Dat had verschillende nadelen. Allereerst doen de ART-ontwikkelaars fantastisch werk in het maximaliseren van de prestaties met hun optimalisaties, en het uitschakelen ervan leidt noodzakelijkerwijs tot minder prestaties (ik heb echter nooit gemeten hoeveel). Dan is de hercompilatie zelf niet altijd gemakkelijk en veroorzaakte ik veel hoofdpijn, vooral in het begin. Ten slotte nemen de opnieuw gecompileerde bestanden ruimte in beslag, naast de vooraf gecompileerde bestanden op / systeem.

De onofficiële versies voor Nougat schakelen deze optimalisaties ook uit, maar ze forceren de hercompilatie niet (omdat de poort oorspronkelijk werd gemaakt om in de ROM te worden geïntegreerd). Daarom worden haken soms niet uitgevoerd.

Met de officiële versie kunt u de geoptimaliseerde code behouden en toch betrouwbare hooks hebben. Hoe werkt dat? Nou, Xposed neemt alle oproepen op die worden gedaan. Dit gebeurt terwijl APK's worden gecompileerd, of in een afzonderlijke pas voor vooraf geoptimaliseerde code. Deze extra gegevens nemen niet veel ruimte in beslag, maar het stelt Xposed in staat uit te zoeken waar een bepaalde methode mogelijk is aangegeven. Dus wanneer 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 opgeroepen. En als de beller veel wordt gebruikt, wordt deze eenvoudig opnieuw gecompileerd met JIT, dit keer met de wetenschap dat de methode is gekoppeld en dat daarom sommige optimalisaties niet van toepassing zijn. Dit betekent dat de effecten van haakmethoden tot het absolute minimum worden beperkt. Yay!

Ga 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.

Gevolgtrekking

We hopen dat je net zo hyped bent als we zijn over de release van Xposed voor Android 7.X Nougat. Het wachten was lang, maar onvermijdelijk gezien de enorme complexiteit van Xposed. Maak je geen zorgen als je nog steeds in de war bent over wat Xposed is of hoe het werkt. Zeer weinig mensen (inclusief onszelf) begrijpen eigenlijk hoe het werkt. Ontwikkelaars zoals rovo89 doen hun best om hun werk te verpakken, zodat u niet echt hoeft te begrijpen wat er zich onder de motorkap afspeelt.

Vind je het Xposed Framework leuk? Overweeg om aan rovo89 te doneren voor het geweldige werk dat hij doet. Als u denkt dat u in staat bent om bij te dragen aan het project, bekijk dan 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 Labs-applicatie en blader door onze verzameling Xposed-modules.

Xposed Modules Forum

Labs downloaden

Android Oreo Progress

In het geval je je dit afvraagt, is hier hoe vooruitgang is geboekt bij het verkrijgen van Xposed voor Android Oreo:

Ik ben al begonnen met werken aan Android 8.0. Ik zal een paar nieuwe taalfuncties moeten bekijken, maar het algemene concept zou nog moeten werken. Dat omvat al het werk aan het ongeldig maken van gecompileerde code van bellers wanneer een methode is gekoppeld, wat verreweg de meeste tijd in beslag nam toen ik aan Nougat werkte. Dus ik heb er alle vertrouwen in dat ik deze keer veel sneller zal zijn. Android 8.1 zou niet veel anders moeten zijn, dus ik verwacht er niet veel extra werk voor.