Onofficieel Xposed Framework voor Android 7.1 Nougat

click fraud protection

Er is nu een flashbare zip beschikbaar die het Xposed Framework naar Android 7.1 Nougat ROM's brengt. De zip werkt op de OnePlus 3T en op vele andere telefoons!

Na maandenlang wachten hebben we eindelijk Xposed Framework-ondersteuning voor Nougat-ROM's (zij het onofficieel). Dankzij een aantal getalenteerde ontwikkelaars op onze eigen XDA-forums kun je nu het Xposed Framework op een Android Nougat-ROM installeren via een flashbare zip.

Tot nu toe zag de toekomst voor Xposed op Nougat er een beetje wankel uit. Rovo89 - de ontwikkelaar achter het Xposed Framework - heeft iets meer dan een week geleden een update gegeven over de ondersteuning voor Android Nougat. Rovo89 verklaarde in wezen dat er nog veel werk aan de winkel was om Xposed goed te laten werken op Nougat, en dat we gewoon geduld moesten hebben.

Gelukkig lijkt het erop dat we een tijdelijke oplossing hebben gevonden voor degenen onder ons die met spanning op een noodmaatregel hebben gewacht. Het PurifyOS-team pakte de ART-module van de ontwikkelaar

abforce aan gewerkt had (en waarover eerder vandaag werd gepost), en aangepast zodat het op andere aangepaste ROM's kan worden geïnstalleerd via een flashbare zip (in plaats van dat het moet worden geïmplementeerd bij het compileren van de ROM).

Er zijn momenteel drie beschikbare versies voor verschillende platforms, waaronder Xposed SDK25 ARM64, Xposed SDK25 ARMen Xposed SDK25 X86. Het PurifyOS-team heeft deze nieuwe versie van Xposed getest met een OnePlus 3T met OxygenOS gebaseerd op Android 7.1, maar het zou moeten werken op andere telefoons met Android Nougat en gebruikers melden al dat ze het met succes op verschillende ROM's hebben kunnen installeren apparaten. Een paar gebruikers van de OnePlus 5 hebben bijvoorbeeld gemeld dat het werkt (geen verrassing, aangezien het op de OnePlus draait). 3T prima), maar een gebruiker met een AOSP-gebaseerd ROM voor de Samsung Galaxy S6 meldde ook dat het voor hen werkte.

Er zullen wat eigenaardigheden zijn om uit te zoeken en tot nu toe is niet iedereen erin geslaagd om het werkend te krijgen, waarbij sommige gebruikers te maken krijgen met gedwongen sluitingen en andere eigenaardigheden. Maar zelfs als dit het geval is, kun je het nog steeds proberen als je hebt gewacht op de komst van Xposed op Nougat sinds de vorige versie van het Android-besturingssysteem werd uitgebracht. Niet alle bestaande Xposed Framework-modules zullen meteen werken, maar sommige echt populaire modules, zoals Amplify, werken naar verluidt wel.

Zorg ervoor dat u regelmatig back-ups maakt en lees de thread aandachtig voordat u zich erin waagt als u niet zeker weet of uw apparaat of ROM wordt ondersteund. Zorg er ten slotte voor dat u de zoekfunctie gebruikt voordat u een dubbele vraag achterlaat. Android O staat misschien voor de deur, maar zoals het gezegde luidt: "beter laat dan nooit." Bovendien zullen veel gebruikers Android O al een tijdje niet meer op hun apparaten zien, dus Xposed zou een leuke traktatie moeten zijn, zodat je je niet in de steek gelaten voelt.


Update: Rovo89's reactie

Het origineel ontwikkeld achter het Xposed Framework, XDA Senior Recognized Developer rovo89, heeft op Github gereageerd met zijn gedachten over deze recente ontwikkelingen.

Uit mijn ervaring kan ik je vertellen dat het inderdaad niet zo moeilijk is om de basis voor elkaar te krijgen, maar het kost ontzettend veel tijd voor de details. Het lijkt op de 80-20-regel, alleen is het meer een 95-5-regel.

De hooking-aanpak die ik voor de vorige releases heb ontworpen, is redelijk stabiel en kan ook voor nieuwere releases worden toegepast. Ik neem aan dat je het grootste deel van de tijd nodig hebt gehad om alle plaatsen te controleren IsProxyMethod() En IsDirect() wordt aangeroepen en beslissen of ze de nieuwe methodemodifier moeten overwegen of niet (d.w.z. gebruik parameter true of niet). Als je dat niet hebt gedaan, heb je misschien een aantal plaatsen gemist waar ze onlangs dergelijke oproepen hebben geïntroduceerd. Hetzelfde geldt voor methoden zoals InstallStubsForMethod(), die op de originele originele methode moet werken, zelfs als ze worden aangeroepen voor een hooked-methode. U moet zoeken naar meer plaatsen waar dit relevant kan zijn. Dat is nog steeds binnen een bereik van dagen, maar als u dit niet doet, ziet u mogelijk obscure crashes of wangedrag dat zeer moeilijk te debuggen is.

Daarnaast heb je een aanpak gekozen waarbij hooks alleen goed zouden werken voor ROM's die volledig opnieuw zijn samengesteld. Op standaard-ROM's en zelfs de meeste aangepaste ROM's (waarbij uw poort niet was opgenomen tijdens het bouwen), evenals voor alle apps die het apparaat mogelijk eerder heeft gecompileerd. Je zou dus helemaal opnieuw moeten beginnen met een gewist apparaat met een speciaal ROM. Als dat niet het geval is, kunnen optimalisaties (bijvoorbeeld inlining) voorkomen dat een methode überhaupt wordt aangeroepen, en daarom zouden hooks niet werken. Het ergste hiervan is dat het exacte gedrag afhangt van de ROM, of zelfs van hoe de gebruiker het apparaat gebruikt (nu apps worden samengesteld op basis van profielen). Modules zouden willekeurig falen en de moduleontwikkelaars zouden zich afvragen wat ze verkeerd hadden gedaan (antwoord: niets). Als niet aan alle vereisten wordt voldaan, is het een behoorlijk onbetrouwbare API. Stel je voor dat Google een update publiceerde waarin de OnClickListener Er werd soms niet op een knop gedrukt, tenzij je je ROM helemaal opnieuw had gecompileerd... Voor mij persoonlijk is dit een grote beperking.

Hij vervolgt:

Het heeft helemaal geen zin om hiermee flashbare ZIP's te publiceren, aangezien de port alleen bedoeld is om een ​​ROM helemaal opnieuw te compileren.

En zoals ik vreesde, er is geen enkele waarschuwing dat dit een onvolledige port is die vaak niet aan het API-contract zal voldoen. 😠 Dat is slecht voor ontwikkelaars en gebruikers, zij moeten in ieder geval weten dat het onvolledig is, zodat ze kunnen beslissen of ze het willen ondersteunen/gebruiken. Ik zou zoiets nooit durven doen zonder een dikke waarschuwing. Eigenlijk zou ik, omdat ik nogal perfectionistisch ben, helemaal geen onvolledige versie publiceren, betrouwbaarheid is voor mij erg belangrijk.

Ik heb zojuist mijn Git-log gecontroleerd en ik had de basis hooking (zoals in deze port) in oktober klaar. Sindsdien heb ik gewerkt aan het wegnemen van de beperkingen. Om het betrouwbaarder te maken op vooraf gecompileerde ROM's, had ik het hercompilatiegedeelte ook kunnen porten, maar dat is nog steeds niet ideaal. Zoals ergens hierboven uitgelegd, hebben we nu JIT, waarmee we alle optimalisaties kunnen behouden, waarbij we alleen de methoden ongeldig maken (en mogelijk opnieuw compileren) die direct worden beïnvloed door hooking. Dit is een behoorlijke uitdaging, omdat het meer is dan alleen kopiëren en plakken. En zolang dit niet gebeurt, zal ik niets publiceren. 9 maanden daarvoor (tot nu toe) is echt heel lang, ik weet het, maar ja, het is mijn vrije tijd en b.v. wegens verhuizing naar een nieuw appartement, ik kon een aantal maanden (!) helemaal niet aan Xposed werken en had verder maar heel weinig tijd.

We moeten duidelijk maken dat deze recente ontwikkelingen niet de echte ‘Xposed’ zijn die jullie allemaal kennen love, maar functioneel stellen ze je in staat om nu enkele Xposed Framework Modules op Android te gebruiken Noga. We zullen het je niet kwalijk nemen dat je niet hebt gewacht op de officiële, stabielere en meer compatibele versie van het Xposed Framework voor Android Nougat, maar we willen duidelijk maken dat deze iteratie slechts een noodmaatregel is die bedoeld is om aan de behoeften van sommige gebruikers te voldoen, toch nu. Het is waarschijnlijk niet de manier waarop Xposed in de toekomst zal worden behandeld.


Download het onofficiële Xposed Framework voor Nougat op de XDA-forums