Vysvetlenie Xposed Framework pre Nougat & abforce Submodule

V tomto článku skúmame rozdiely medzi pripravovaným vydaním Xposed for Nougat od rovo89 a aktuálnou implementáciou, ktorá je k dispozícii pre Nougat.

Rámec Xposed bol – a stále je – hlavným spôsobom prispôsobenia vášho zariadenia Android, ktorý je kompatibilný s takmer všetkými zariadeniami a umožňuje vám jednoducho nainštalovať moduly na vyladenie prakticky akéhokoľvek detailu.

Chcete získať všetky funkcie, ktoré ponúka vlastná ROM, bez toho, aby ste museli jednu flashovať?GravityBox aleboXTouchwiz urobí to. Chcete vyladiť určité nastavenia pre každú aplikáciu, napríklad zmeniť DPI konkrétnej aplikácie?Nastavenia aplikácie máte pokryté. Prajeme si, aby vývojári aplikácie mysleli na pridanie konkrétnej funkcie, napríklad vám to Google dovolíprispôsobiť Hangouts alebo Facebook vám to umožnístiahnite si príspevky na Instagrame, ktoré sa vám páčia? No, nemusíte, pretože Xposed dáva vývojárom možnosť upraviť takmer čokoľvek či už ide o celosystémovú funkciu, ktorá by si vyžadovala vlastnú ROM, alebo vylepšenie konkrétneho aplikácie.

Rámec Xposed prichádza s veľkou výhodou pre vývojárov, ktorou je jednoduchosť vývoja (v porovnaní s nutnosťou kompilovať AOSP pre vylepšenia ROM alebo úpravou kódu Smali). Pre používateľov to tiež prináša obrovskú výhodu: pohodlie, pretože ich už nenúti nájsť a flashovať ROM, ktorá poskytuje každú jednu funkciu, ktorú hľadajú (namiesto toho môžu kombinovať nezávislé moduly) nad rámec svojej cieľovej rovnováhy stability a výkon. To tiež robí ladenie aplikácií oveľa jednoduchšie, pretože nie je potrebné zaoberať sa rôznymi podpismi, ktoré by v dôsledku toho vyžadovali od používateľov odinštalovanie originálu verziu alebo preskočiť cez určité obruče, keď aplikácia kontroluje svoj podpis (niečo, čím sa zaoberajú upravení klienti YouTube, napr príklad).

Jediný problém? Vzhľadom na svoju povahu a množstvo voľného času vývojár Xposed (náš vlastný uznávaný vývojár,rovo89), často zaostáva za vydaniami systému Android.Aktualizácia na podporu Lollipop trvala asi štyri mesiace, a trvá to asi rok, kým prídete do Nougatu. Nie je to také zlé, ako sa môže zdať, ak sa nad tým zamyslíte koľko používateľov systému Android skutočne používa Nougat (okolo 13,5%, aj keď majte na pamäti, že nadšenci Androidu, cieľové publikum Xposed, sú tiež pravdepodobnejšie na Nougate). Stále však môže byť dosť nepríjemné, že nemôžete používať svoje obľúbené moduly Xposed a zároveň mať najnovšiu a najlepšiu verziu systému Android.

S dostupným zdrojovým kódom rámca Xposed (aspoň pre stabilné vydané verzie), vývojárabforce rozhodol sa zašpiniť si ruky a zistiť, či dokáže preniesť niektoré modifikácie rovo89 na Nougat. Spoločnosť abforce, ktorá sa rozhodla pre iný a jednoduchší prístup, v podstate prispôsobila časť Xposed, ktorá v skutočnosti bola robí kúzlo po nainštalovaní a umožnilo ho zahrnúť pri kompilácii vlastnej ROM (potom objavili sa ďalšie riešenia). Tento prístup je pravdepodobne veľmi odlišný pretože ignoruje jednu zo základných výhod Xposed, ktorá je ľahko dostupná pre každého. Každý pokrok je však vítaný a viacero hláv, ktoré riešia úlohu, môže byť výhodné a ponúkať nový pohľad. Hlavným problémom, ako to vidíme, sú dezinformácie okolo tohto vývoja (šírené niektorými ďalšími „vývojármi“ a niektorými blogmi), ako aj niektoré reakcie komunity. Dúfajme, že tento článok objasní celý obraz.


V prvom rade, aby sme pochopili prácu, ktorá prešla – a stále ide – do oficiálneho rámca Xposed, ako aj do verzie abforce, musíme sa pozrieť na to, ako rámec funguje. Zatiaľ čo samotný rámec je iba časť projektu, zvyčajne máme na mysli rámec aj inštalačný program pretože framework stráca mnohé zo svojich výhod bez univerzálneho inštalátora, s ktorým je tiež veľa práce.

Sila Xposed pochádza z jednoduchého konceptu: akúkoľvek metódu možno „zavesiť“ (metódy sú malé časti, ktoré tvoria akýkoľvek program), aby sa kód modulu Xposed spustil pred, po alebo namiesto to. Uveďme si jednoduchý príklad: predpokladajme, že Instagram používa metódu s názvom „showMenuOptions“, keď kliknete na tlačidlo ponuky, a táto metóda sa postará o zobrazenie tlačidiel „Report“ a „Share“. Vytvorením modulu Xposed môžete túto metódu upraviť tak, aby ste namiesto zdieľania pridali ďalšie tlačidlo na stiahnutie obrázka. Úpravy sa môžu pohybovať od jednoduchých vylepšení (napr. Zoznam zmien Obchodu Play) na veľké generálne opravy (ako napr GravityBox, ktorej cieľom je poskytnúť všetky funkcie, ktoré by vlastná ROM mala)!

Vďaka tomu je Xposed výkonný, ale je to len časť rovnice. Ostatné časti sú všestrannosť - alebo vlastne schopnosť používať Xposed na takmer akomkoľvek zariadení (s podporovanou verziou systému Android) a jednoduché použitie. Všetci používatelia musia urobiť, je chytiť inštalačný program, ktorý urobí svoje kúzlo a dynamicky opraví ich systém, aby integroval Xposed. Ak chcete použiť modul, stačí ho nainštalovať, povoliť a reštartovať. Nevyžaduje sa žiadny zmätok, nie je potrebné flashovať vlastnú ROM (najmä keď vlastné ROM nie sú vždy životaschopnou voľbou), nie je potrebné odinštalovať súbor APK na inštaláciu ďalšieho podpísaného iným podpisom. Všetko, čo potrebujete, je root (absolútne môžete mať vlastnú ROM a to dáva veľa času zmysel; ale zatiaľ čo Xposed môže poskytnúť väčšinu funkcií, ktoré môže poskytnúť vlastná ROM, ide aj ďalej).

Za touto jednoduchosťou je však veľa práce:

  1. Pre vývojárov modulov musí byť poskytnuté API stabilné a zaručené, že bude fungovať. Rámec Xposed nemôže náhodne zlyhať s určitými kombináciami ROM a/alebo háčikov (okrem výnimočných prípadov). Inými slovami, ak má používateľ problém, tento problém by mal byť buď chybou používateľa (pretože nie inštalácia/povolenie niečoho správne) alebo chyba vývojára modulu (pre chyby v modul). Malo by však byť takmer isté, že samotný rámec funguje tak, ako má, a nie je zdrojom chýb, ktoré by používateľov frustrovali a vývojárov zmiatli.
  2. Pre používateľov musí byť inštalácia frameworku na zariadení a ROM jednoduchá, bez ohľadu na to, či majú Samsung s najnovšou verziou TouchWiz alebo Nexus s nainštalovaným LineageOS. Inštalátor Xposed to všetko rieši v zákulisí. Musí to ísť veľa práce na testovanie inštalátora a rámca na rôznych zariadeniach a kombináciách ROM. Zistili sa chyby, často kvôli rôznym implementáciám OEM, a musia byť opravené, aby sa zabezpečila spoľahlivosť pre všetkých používateľov.
  3. Hlavné revízie systému Android môžu niekedy priniesť veľké zmeny, čo si vyžaduje prehodnotenie častí architektúry rámca, aby sa týmto zmenám prispôsobili. Niekedy sa s novšími verziami objavia aj ďalšie príležitosti, ktoré si vyžadujú nejaký čas navyše na získanie lepšieho produktu. Keď bol ART prvýkrát predstavený, napríklad Xposed deaktivoval určité optimalizácie, aby hákovanie mohlo fungovať správne. V prípade Nougata,just-in-time (JIT) kompilátor prináša príležitosťponechajte tieto optimalizácie.

Veľa z vyššie uvedenej práce ide do menších detailov, kde väčšina rámca funguje tak, ako má, ale nezrovnalosti a menšie problémy by z neho urobili hazard pre používateľov a nočnú moru pre podporu a vývoj pre modul vývojárov. Vydaný produkt si však kladie za cieľ byť použiteľný pre všetkých a bez prekvapení. Samozrejme, existuje niekoľko výnimiek, keďže niektoré zmeny OEM si vyžadujú väčšie úsilie na prispôsobenie sa, ale tie sú menšie a drvivá väčšina používateľov (a vývojárov) si môže užívať stabilný a spoľahlivý Xposed skúsenosti. Všetky zistené výnimky sú zdokumentovanéjasné vylúčenia zodpovednosti aby sa nikto nečudoval.

S ohľadom na vyššie uvedené je víziou rovo89 pre Xposed byť stabilným riešením, ktoré používateľom a vývojárom poskytuje spoľahlivý a ľahko použiteľný kontrakt. Jeho filozofia, aj keď s ňou možno nesúhlasíte, je jednoduchá a zrozumiteľná: produkt by mal byť uvoľnené, keď je pripravené na použitie podľa plánu, pretože jeho uvoľnenie skôr vedie k väčším problémom ako výhod.


submodul Xposed ART od abforce pre Nougat

Zdráhame sa nazvať prácu abforce „port“ alebo „neoficiálny Xposed“, pretože je to nepresné a zavádzajúce. Ako sme videli, Xposed má dve hlavné zložky:

  1. Jadro samotného rámca Xposed, ktorý zvláda kúzlo hákových metód.
  2. Inštalačný program Xposed, ktorý zaisťuje jednoduchú a správnu inštaláciu rámca na všetky zariadenia.

To, čo urobil abforce, bolo portovanie kódu Marshmallow rovo89 v prvej časti (iba rámec Xposed) na Nougat spôsobom, ktorý by vyžadoval, aby sa zmeny vykonali pri kompilácii vlastnej ROM. Okrem toho mnohé menšie (ale dôležité) časti rámca nie sú úplne prispôsobené Nougatu. Správanie ako také môže byť nekonzistentné a hoci väčšinou funguje (hoci nieprekaždý), nie je to spoľahlivé. Pre vývojárov modulov a používateľov by spoliehanie sa na neúplnú a nekonzistentnú implementáciu bolo spravodlivé poskytnúť zlú skúsenosť všetkým zúčastneným stranám, s niektoré moduly nefungujú vôbec alebo spôsobujú, že sa zariadenie nespustí. Zatiaľ čo mnohí používatelia môžu byť v poriadku s tým radšej niečo ako nič, pohľad vývojárov je stále úplne pochopiteľný (najmä ak máte na pamäti, že odmietnutie zodpovednosti nezastaví falošné otázky podpory a fňukanie).

(Okrem vyššie uvedených dvoch hlavných bodov budeme tiež očakávať ďalšie zmeny konečného oficiálneho rámca Xposed, aby sme využili zmeny zavedené v Nougate.)

Treba poznamenať, že abforce odviedol vynikajúcu prácu, keď sa väčšina uspokojila s jednoduchým rozprávaním, ale jeho práca má ďaleko od plného zážitku z Xposed a žiadny vývojár ani blog netvrdí niečo iné (a rozhodne nie abforce; opäť, nemáme nič iné ako rešpekt voči všetkým skutočným vývojárom, ktorí do toho vkladajú skutočnú prácu a úsilie). V skutočnosti, ako sa trochu dotkneme, niektoré reakcie komunity (či už ide o používateľov alebo „vývojárov“) sú jedinou slabou časťou v tomto reťazci vývoja.


Preseknime naháňačku a prejdime rovno k veci: každá komunita má zlé prvky a aspekty. S tak veľkou komunitou, akou sú nadšenci Androidu, sa zlé prvky môžu zdať ako veľká časť, aj keď sú len malou časťou (veľká, ale v relatívnom vyjadrení stále zanedbateľná). Bez toho, aby sme to nejako pricukrovali, však väčšina reakcií komunity na vývoj Xposed for Nougat bola extrémne detinská, bezohľadná alebo nezodpovedná.

Prvým hlavným problémom bol blahosklonný postoj mnohých k „smrti Xposed“, pretože jej vydanie pre Nougat trvá príliš dlho. To je napriek rovo89 aktualizácieazáruky, a to aj napriek takmer presnému scenáru, ktorý sa odohral s Lollipop, keď bola predstavená pôvodná verzia ART. Je v poriadku prestať používať Xposed, ale nie je to urážať niekoho schopnosti alebo útočiť na iných za to, že majú inú filozofiu alebo nezabezpečili okamžité splnenie vašich potrieb. To platí ešte viac pre úplne bezplatný projekt, kde vývojár vyjadril svoju metodiku vývoja a dôvody, ktoré k tomu viedli.

Ďalším problémom s odozvou komunity bolo nepochopenie podstaty práce abforce, pričom mnohí ju vyzdvihovali ako nový Xposed alebo ju inzerovali ako prístav pre Nougat. Hlavným problémom s tým je to, že „vývojári“ sa ponáhľajú ponúkať flashovateľné verzie bez toho, aby pochopili (alebo sa o ne zaujímali) nevýhody, pretože neboli žiadne odmietnutia zodpovednosti. ponúkané vôbec v niektorých vláknach, pričom niektoré dokonca zachádzajú tak ďaleko, že pripisujú kredit abforce a nie rovo89 (kto stojí za veľkou väčšinou práce na Xposed) a iné prispievateľov.

Ako posledný bod, cítime, že by sme mali znovu uviesť filozofiu rozvoja rovo89. S mnohými hlasnými používateľmi, ktorí tvrdia, že mať najnovšie zmeny ako open-source by bolo prospešné. Aj keď to teoreticky znie dobre, je to takv praxi to nie je také jednoduché najmä ak vezmeme do úvahy vysvetlenie rovo89:

[...] Verím, že len vytlačenie súčasného stavu by projektu nepomohlo. Možno by sme videli „nejaké“ vydanie naozaj rýchlo ľuďmi, ktorí kompilujú kód, vidia, že to tak vyzerá funguje dobre a zverejnia ho ako „svoj prístav“, napriek problémom a veciam, o ktorých by si neboli vedomí z Tak ma nazvite sebeckým, ale nechcel by som vidieť takéto napoly hotové vydanie.[zdroj]

Čo sa vlastne ukázalo ako celkom dobrá predpoveď súčasného stavu, prihlásilo sa viacero „developerov“. zmeny abforce a ponuka flashovateľného ZIP s minimálnymi alebo žiadnymi upozorneniami, neúplnými kreditmi, a to všetko pri požiadaní o darov.


Dúfame, že tieto vysvetlenia rozptýlili niektoré z vašich pochybností a vyriešili možné mylné predstavy, ktoré ste mohli mať. Xposed bol úžasný projekt, ktorý oslovil obrovskú časť našej komunity nadšencov a flashaholikov a Xposed for Nougat by mal byť ďalším gigantickým míľnikom plným príležitostí. S modulmi ako GravityBox už ponúka podporu Nougat, hotový projekt rovo89 sa vráti k množstvu možností.


Tešíte sa na Xposed na vašej Nougat ROM? Dajte nám vedieť v komentároch!