Megérkezett a hivatalos Xposed Framework Android Nougat számára

Hosszas várakozás után az Xposed Framework fejlesztője hivatalosan is bejelentette, hogy a projekt már támogatja az Android Nougat-ot. Telepítse az Xposed modulokat most!

Ahogy az Android ökoszisztémája az évek során érett, egyre kevesebb felhasználó talál okot arra, hogy miért kellene rootolnia eszközét. Egyre nagyobb a tendencia, hogy a felhasználók úgy döntenek, hogy a készlet firmware-nél maradnak, vagy azért, mert kielégítőnek találják a tapasztalatot, vagy nem akarnak játszani macska-egér játék a Google SafetyNet API-jával. De ha 2016 elején megkérdeztél egy felhasználót, hogy miért rootolta a telefonját, akkor talán az első számú ok az volt, hogy telepítse az Xposed Framework-et. Ez már több mint egy éve az Android 7.0 Nougat óta először megjelent, de a hosszú várakozásnak végre vége: végre elérhető a hivatalos Xposed Framework for Android Nougat.

Az elmúlt év során az XDA Senior Recognised Developer rovo89, az Xposed Framework vezető fejlesztője biztosította számosfrissítéseket az Xposed Framework for Android Nougat fejlődéséről. Egyesek számára a

a várakozás tűrhető volt főként az Xposed Framework által kínált számos további funkció miatt Android Marshmallow. De sokan mások is Xposed nélküli életet folytattak eszközeiken.

Újult izgalmat láttunk a projektben, amikor a fejlesztő abforce kiadott egy ART almodul az AOSP 7.1.2-hez, de ahogy a mi GermainZ-ünk is rámutat jobban jártál, ha megvárod a hivatalos Xposed Framework-et kiadás, mivel az abfor implementációja megkövetelte, hogy a keretrendszert egyedi ROM-okba integrálják. Továbbá, ez a nem hivatalos megvalósítás hiányos volt, ami inkonzisztens vagy hibás viselkedéshez vezetett bizonyos Xposedeknél Modulok.

Míg az abfor nagyszerű munkát végzett azzal, hogy nem hivatalos Xposed-jét Android 7.1 Nougat-on dolgoztatta, a megvalósítása ellentmondott A rovo89 elképzelése az Xposedről – hogy ez egy stabil megoldás legyen, amely megbízható és könnyen használható szerződést biztosít a felhasználók és a fejlesztők számára hasonló. Ez alatt azt értjük, hogy nem csak a moduloknak kell problémamentesen működniük a felhasználók számára, hanem a modulok beállításának módját is A felépítésnek konzisztensnek kell lennie a felhasználók között, hogy a fejlesztők tudják, hogy az Xposed modul hibás-e egy alkalmazásért. összeomlik.

Többé nem kell aggódnunk az olyan problémák miatt, mint a rovo89 (az XDA elismert fejlesztőjének segítsége után wanam) készen áll az Xposed Framework és Installer hivatalos frissítésének kiadására – ezzel kompatibilitás az Android 7.0/7.1 Nougat rendszerrel. Ez azt jelenti, hogy nem kell egyéni ROM-ot telepítenie, vagy nem kell a villogó instabil verziókkal bajlódnia élvezze az Xposed szolgáltatást – csak rootolja a telefont, és telepítse a legújabb Xposed Installer alkalmazást (lásd lent) és a Az Xposed Installer elvégzi az Xposed telepítésének varázslatát.

Az Xposed telepítő a modul tárolójában böngész

Ez egyes fejekben kissé későnek tűnhet, különösen amióta megjelenik ez a kiadás több mint egy hónappal az Android 8.0 Oreo megjelenése után. Ne feledje, hogy nagyon kevés eszköz férhet hozzá az Android Oreo stabil verziójához hosszú hónapokig. Az Android Oreo Csak 0.2% az összes Android készülék közül A Google legfrissebb statisztikái szerint (a Nougatnál kb. 18%-hoz képest), de sok felhasználónk szereti az egyedi ROM-ok telepítését, hogy az élvonalban maradjon.

Az Android verzió terjesztése 2017 októberétől. Forrás: Google

Bár akkor is, ha telepít egy az Android 8.0 nem hivatalos portja számtalan eszközön elérhető fórumainkon, ezek közül a portok közül sok nem napi illesztőprogram-státusz. Tehát hacsak nem hajlandó több száz dollárt kiadni egy vadonatújért Google Pixel 2/2 XL, Sony Xperia XZ1/XZ1 Compact, vagy egy közelgő eszköz, például a Huawei Mate 10, akkor valószínűleg több hónapos használatot is ki tud majd szorítani az Xposed Frameworkből Android Nougat rendszeren.

Ha ez úgy hangzik, mint te, akkor látogass el az Xposed Installer és a keretrendszer zipjeihez tartozó hivatalos fórumszálra, hogy üzembe helyezhesd Android Nougat eszközödön.

Az Xposed Installer v3.1.2 letöltése (melléklet)

Xposed Installer for Nougat 7.0 (SDK24) letöltése

Xposed Installer for Nougat 7.1 (SDK25) letöltése

A sok újabb felhasználó számára, akik nem ismerik annyira, hogy mire használható az Xposed Framework vagy hogyan működik, Az alábbiakban röviden elmagyarázza az Xposed Framework-et, miért kell izgatottnak lennie, és miért tartott a fejlesztés olyan sokáig, mint tette.


Miért kell telepíteni az Xposed Framework-et?

Egyedi ROM-funkciókat szeretne kapni egyéni ROM felvillantása nélkül? Az összes Xposed Modul anyja a ROM módosításához, az úgynevezett GravityBox, fedezted-e. Szeretné személyre szabni a megjelenítési beállításokat alkalmazásonként? Próbáld ki Alkalmazásbeállítások. Mit szólnál bizonyos alkalmazások testreszabásához, mint pl Hangouts? Vagy módosítsa az Instagramot, hogy tudd töltsd le a kívánt bejegyzéseket?

Az Xposed lehetőséget ad a fejlesztőknek nagyjából azt módosítják, amit akarnak– többnyire egyedi alkalmazásokra irányul, de akár a rendszerszintű funkciók is módosíthatók. Az általunk felsorolt ​​példák csak a jéghegy csúcsát jelentik. A hozzáadható további funkciók vagy módosítható alkalmazások száma hihetetlen – csak keressen a hivatalos Xposed Module tároló hogy maga lássa. Ne feledje, hogy előfordulhat, hogy egyes modulokat frissíteni kell ehhez az új kiadáshoz és a Nougat támogatásához, ezért mindenképpen ellenőrizze, mielőtt telepíti őket a Nougat ROM-ra!

Hogyan működnek az Xposed modulok?

A lényeg az, hogy az Xposed Framework lehetővé teszi a modulok számára „akasztó” bármely alkalmazás Java metódusaiba– legyen az felhasználó által telepített vagy rendszeralkalmazás. Az Xposed lehetővé teszi a modulok számára, hogy saját metódusaikat hajtsák végre előtt, közben vagy helyett a célalkalmazás eredeti metódusai.

Képzeljünk el például egy, a Gmail alkalmazásban használt módszert, amely értesítéseket tesz közzé az új e-mailekről. Alapértelmezés szerint a módszer új értesítést hoz létre gombokkal az archiváláshoz/törléshez vagy az e-mail megválaszolásához. Egy Xposed Modul beépíthető ebbe a módszerbe, és hozzáadhat egy új gombot, például "megjelölés olvasottként". (Igen, van már csak erre való modul.)

A fentiek túlságosan leegyszerűsítik a végeredményt annak, amit az Xposed Framework lehetővé tesz a moduljainak. Maga a keretrendszer hihetetlenül összetett, és szinte univerzálisan működik rootolt eszközökön – egyéni ROM nélkül –, ezért tartott olyan sokáig az Xposed for Android Nougat elkészítése.

Miért tart ilyen sokáig az Xposed fejlesztés?

Az Xposed mögött meghúzódó varázslat – ami lehetővé teszi, hogy a modulok más alkalmazások módszereihez kapcsolódjanak – mélyreható ismereteket igényel a Zygote és a Android Runtime (ART) működik. Ezek a követelmények már eleve kizárják, hogy sok ember hozzájáruljon a projekthez, de a problémát súlyosbítja, hogy a Az elmúlt 5 évben a rovo89 volt az Xposed fő közreműködője.

Ez az oka annak, hogy az Xposed legutóbbi nyilvános kiadása óta az Xposeden végrehajtott módosításainak nyílt forrásból való beszerzésére irányuló felhívásokat elutasították. Ez az ő ötlete, és ő tudja a legjobban megérteni és módosítani, így ilyen késői szakaszban több munkaerőt kell hozzáadni a projekthez. egyszerűen tovább késleltetheti a projektet.

Ráadásul ha a rovo89 folyamatosan frissíti a forrását, – aggódott hogy valaki a befejezetlen kódot felhasználva félig működő Xposed Frameworket építene az univerzális Xposed Installer nélkül. (Egyébként pontosan ez történt az abfor implementációval, és a különféle telepítési módok ebből adódó zűrzavara indokolta a rovo89 habozását.)

Így a legjobb, amit tehettünk, hogy időt hagytunk rovo89-nek, hogy dolgozzon a kisállat-projektjén. Az Xposed nem teljes, sőt nem részmunkaidős munkája. Ez egyszerűen egy hobbi, amit 5 éve a közösség érdekében csinál. Egy olyan összetett projekthez, mint az Xposed, időre van szükség a munkához, majd a teszteléshez – ez az idő, amire más kötelezettségei miatt nem volt gyakran szüksége. Előrehalad volt az elmúlt évben készült, ahogy rovo89 is dokumentálta néhány nyilvános frissítésében a problémával kapcsolatban, míg végül maga az Xposed Framework és az Xposed Installer is készen áll a kiadásra.

Mit tett a rovo89, hogy az Xposed működjön a Nougatban?

Az Android új kiadásai időnként megváltoztatják az ART működését, ami az Xposed egyes részeinek átdolgozását teheti szükségessé. Az Android 7.0 Nougat bevezette a Just-in-Time fordítót az ART-hoz, amely például javítja az alkalmazások futásidejű teljesítményét. De az abfor nem hivatalos Xposed Framework egyszerűen letilt sok ART optimalizálást, hogy a metódusok összekapcsolása megfelelően működjön.

ART optimalizálás az Android Nougatban. Forrás: Google

Ezzel szemben a rovo89 megvalósítása megtartja az összes ART optimalizálást Android Nougatban egy metódus hívójának újrafordításával a JIT segítségével, és a metódushorogok továbbra is a helyükön vannak. Ez azt jelenti, hogy élvezheti az Xposed Modul előnyeit a teljesítmény feláldozása nélkül az ART optimalizálás erőszakos letiltásával.

Ha további részletekre kíváncsi, mit tett a rovo89 annak érdekében, hogy végre megbízható akasztási módszert érjen el az Xposed for Android Nougat alkalmazásban, javasoljuk, hogy olvassa el az alábbi nyilatkozatot, amelyet nekünk adott.

A rovo89 teljes nyilatkozata

Az Xposed magja nyilvánvalóan a Java metódusok összekapcsolásának képessége, azaz lehetővé teszi, hogy a modulok kódot hajtsanak végre e metódusok előtt, után vagy helyett. Szinte minden más funkció ezen alapul, ezért nagyon fontos, hogy mindig az elvárásoknak megfelelően működjön. Az általános koncepció az Xposed öt éve feltalálása óta ugyanaz, ehhez meg kell változtatni a metódus belépési pontját. Ez akkor kezd meghiúsulni, ha a belépési pontot nem ellenőrzik a végrehajtás során – ami valójában az ART egyes optimalizálásainál is így van.

Az egyik példa az, amikor a belépési pont a fordításkor már ismert, és a hívók közvetlenül erre a címre ugorhatnak anélkül, hogy megkeresnék. Egy másik példa az inlining. Tekintsük ezt a példát:

Az ART elég okos ahhoz, hogy észrevegye, hogy a double() metódus nagyon egyszerű, ezért a logikát közvetlenül a doSomething() metódusba ágyazza, például:

Továbbra is bekötheti a double() metódust, de a doSomething() már nem hívja meg futás közben, és a visszahívás sem. A MŰVÉSZET még okosabb: felismeri, hogy a mágia mindig 42, ezért a feltétel soha nem teljesülhet. Tehát az egész doSomething() metódus valójában egy no-op:

A korábbi verziókban az Xposed teljesen letiltotta ezeket az optimalizálásokat, és mindent újrafordított. Ennek több hátránya is volt. Először is, az ART fejlesztők fantasztikus munkát végeznek a teljesítmény maximalizálásában optimalizálás, és ezek letiltása részben szükségszerűen kisebb teljesítményhez vezet (soha nem mértem, mennyit bár). Aztán maga az újrafordítás nem mindig egyszerű, és sok fejfájást okozott nekem, főleg az elején. Végül az újrafordított fájlok helyet foglalnak el, a /system előre lefordított fájlok mellett.

A Nougat nem hivatalos verziói szintén letiltják ezeket az optimalizálásokat, de nem kényszerítik az újrafordítást (mivel a port eredetileg a ROM-ba való integrálásra készült). Ezért előfordulhat, hogy a horgokat néha nem hajtják végre.

A hivatalos verzióval megtarthatja az optimalizált kódot, és továbbra is megbízható horgokkal rendelkezik. Hogyan működik? Nos, az Xposed rögzíti az összes kezdeményezett hívást. Ez akkor történik, amikor az APK-k fordítása folyamatban van, vagy az előre optimalizált kódhoz tartozó külön menetben. Ezek a kiegészítő adatok nem foglalnak sok helyet, de lehetővé teszik az Xposed számára, hogy megtudja, hol szerepelhetett egy bizonyos módszer. Tehát amikor egy metódus be van kapcsolva, akkor az összes hívója deoptimálásra kerül, azaz a kódjuk nem lesz többé használva. Ez biztosítja, hogy a hook-visszahívás biztosan megtörténik. És ha a hívót erősen használják, akkor egyszerűen újrafordítják a JIT-vel, ezúttal annak tudatában, hogy a metódus be van kapcsolva, és ezért néhány optimalizálás nem érvényes. Ez azt jelenti, hogy a beakasztási módszerek hatása a minimumra csökken. Hurrá!

Most pedig menj és próbáld ki. Ügyeljen arra, hogy az Xposed Installer 3.1.2-t használja, mivel a konfigurációs elérési utat meg kellett változtatni, hogy támogassa a fájl alapú titkosítást.

Olvass tovább

Következtetés

Reméljük, hogy Ön is legalább annyira lelkes, mint mi az Xposed Android 7.X Nougathoz való megjelenésével kapcsolatban. A várakozás hosszú volt, de az Xposed rendkívül összetettsége miatt elkerülhetetlen. Ha még mindig nem tudja, mi az Xposed, vagy hogyan működik, ne aggódjon. Nagyon kevesen (minket is beleértve) értik valójában, hogyan működik. Az olyan fejlesztők, mint a rovo89, mindent megtesznek munkájuk csomagolásában, így nem kell igazán megértened, mi történik a motorháztető alatt.

Tetszik az Xposed Framework? Fontolja meg, hogy adományoz-e rovo89-nek az általa végzett nagyszerű munkájáért. Ha úgy gondolja, hogy rendelkezik azzal, ami ahhoz kell, hogy hozzájáruljon a projekthez, tekintse meg a rovo89 GitHub oldalát alább.

Adományozz a rovo89-nek

Hozzájárulás az Xposedhez

Xposed modulokat keres? Tekintse meg az Xposed Framework Module alfórumunkat, vagy töltse le az XDA Labs alkalmazást, és böngésszen az Xposed modulok gyűjteményében.

Xposed Modules fórum

Töltse le az XDA Labs alkalmazást

Android Oreo Progress

Ha kíváncsi, a következőképpen halad az Xposed Android Oreo-hoz:

Már elkezdtem dolgozni az Android 8.0-n. Van néhány új nyelvi funkciók amit meg kell néznem, de az általános koncepciónak még működnie kell. Ebbe beletartozik az összes hívó lefordított kód érvénytelenítésével kapcsolatos munka, amikor egy metódus be van kapcsolva, ami messze a legtöbb időt vette igénybe, amikor a Nougaton dolgoztam. Szóval nagyon bízom benne, hogy ezúttal sokkal gyorsabb leszek. Android 8.1nem kellene sokban különböznie, ezért nem számítok sok további munkára.