Po dlouhém čekání vývojář Xposed Framework oficiálně oznámil, že projekt nyní podporuje Android Nougat. Nainstalujte moduly Xposed nyní!
Jak ekosystém Android v průběhu let vyspěl, stále méně uživatelů nachází důvody, proč by měli své zařízení rootovat. Existuje rostoucí trend uživatelů, kteří se rozhodnou zůstat na základním firmwaru, buď proto, že považují zkušenosti za uspokojivé, nebo nechtějí hrát hra na kočku a myš s Google SafetyNet API. Ale pokud jste se na začátku roku 2016 zeptali uživatele, proč rootovali své telefony, možná byl uveden důvod číslo jedna, aby mohli nainstalujte Xposed Framework. Bylo to více než rok od Androidu 7.0 Nougat byl poprvé vydán, ale dlouhé čekání je konečně u konce: oficiální Xposed Framework pro Android Nougat je konečně k dispozici.
V průběhu minulého roku XDA Senior Recognized Developer rovo89, hlavní vývojář Xposed Framework, poskytl několikaktualizace o pokroku Xposed Framework pro Android Nougat. Pro některé, čekání bylo snesitelné většinou kvůli obrovskému množství dalších funkcí, které Xposed Framework nabízí
Android Marshmallow. Ale mnoho dalších přešlo na život bez Xposed na svých zařízeních.Viděli jsme záblesk obnoveného vzrušení v projektu, když vývojáři abforce vydali ART submodul pro AOSP 7.1.2, ale jak zdůrazňuje náš vlastní GermainZ raději jste čekali na oficiální Xposed Framework vydání, protože implementace abforce vyžadovala integraci rámce do vlastních ROM. dále tato neoficiální implementace byla neúplná, což vedlo k nekonzistentnímu nebo chybnému chování s určitými Xposed Moduly.
Zatímco abforce odvedl skvělou práci, když jeho neoficiální Xposed fungoval na Androidu 7.1 Nougat, jeho implementace byla v rozporu Vize společnosti rovo89 pro Xposed – že by to mělo být stabilní řešení poskytující spolehlivou a snadno použitelnou smlouvu pro uživatele a vývojáře podobně. Máme tím na mysli to, že nejen, že by moduly měly fungovat bez problémů pro uživatele, ale také způsob, jakým jsou moduly nastaveny nahoru by mělo být mezi uživateli konzistentní, takže vývojáři budou vědět, zda je za aplikaci zodpovědný modul Xposed pád.
Už se nemusíme starat o takové problémy, jako je rovo89 (po nějaké pomoci od XDA Recognized Developer wanam) je nyní připravena vydat oficiální aktualizaci Xposed Framework a Installer – přináší kompatibilita s Androidem 7.0/7.1 Nougat. To znamená, že nebudete muset instalovat vlastní ROM nebo se budete muset potýkat s blikajícími nestabilními verzemi užijte si Xposed – stačí rootovat telefon a nainstalovat nejnovější aplikaci Xposed Installer (odkaz níže) a a Xposed Installer udělá kouzlo instalace Xposed za vás.
Xposed Installer Procházení úložiště modulů
Někomu se to může zdát trochu pozdě, zvláště když přichází toto vydání více než měsíc po vydání Androidu 8.0 Oreo. Mějte na paměti, že jen velmi málo zařízení bude mít přístup ke stabilní verzi Android Oreo po mnoho příštích měsíců. Android Oreo je jen na 0.2% všech zařízení Android (ve srovnání s ~18 % na Nougatu) podle nejnovějších statistik od Google, ale mnoho našich uživatelů patří k těm, kteří milují instalaci vlastních ROM, aby zůstali na okrajích.
I když nainstalujete neoficiální port Androidu 8.0 k dispozici na nesčetných zařízeních na našich fórech, mnoho z těchto portů nemá denní status ovladače. Pokud tedy nejste ochotni utratit stovky dolarů za zbrusu nový Google Pixel 2/2 XL, Sony Xperia XZ1/XZ1 Compact, nebo připravované zařízení, jako je Huawei Mate 10, pak pravděpodobně budete schopni vymáčknout několik měsíců používání z Xposed Framework na Android Nougat.
Pokud to zní jako vy, přejděte na oficiální vlákno fóra pro Xposed Installer a framework zipy, abyste jej zprovoznili a zprovoznili na svém zařízení Android Nougat.
Stáhnout Xposed Installer v3.1.2 (příloha)
Xposed Installer pro Nougat 7.0 (SDK24) ke stažení
Xposed Installer pro Nougat 7.1 (SDK25) ke stažení
Pro mnoho novějších uživatelů, kteří nejsou tak obeznámeni s tím, k čemu lze Xposed Framework použít nebo jak funguje, stručně vysvětlí Xposed Framework níže, proč byste měli být nadšení a proč vývoj v tomto trval tak dlouho dělal.
Proč instalovat Xposed Framework?
Chcete získat vlastní funkce ROM bez flashování vlastní ROM? Matka všech modulů Xposed pro ladění vaší ROM, známé jako GravityBox, máte pokryto. Chcete upravit nastavení zobrazení pro jednotlivé aplikace? Snaž se Nastavení aplikace. Co takhle přizpůsobit určité aplikace jako Hangouty? Nebo upravte Instagram, abyste mohli stahujte jakékoli příspěvky, které se vám líbí?
Xposed dává vývojářům možnost upravovat prakticky co chtějí—většinou zaměřené na jednotlivé aplikace, ale lze upravit i funkce celého systému. Příklady, které jsme uvedli, jsou jen špičkou ledovce. Počet dalších funkcí, které můžete přidat, nebo aplikací, které můžete upravit, je neuvěřitelný – stačí prohledat oficiální repozitář Xposed Module přesvědčit se na vlastní oči. Mějte na paměti, že některé moduly mohou vyžadovat aktualizaci pro toto nové vydání a podporu Nougat, takže si je před instalací do ROM Nougat nezapomeňte zkontrolovat!
Jak Xposed Moduly fungují?
Podstatou toho je, že Xposed Framework to modulům umožňuje "zaháknout" do metod Java jakékoli aplikace— ať už se jedná o uživatelsky instalovanou aplikaci nebo systémovou aplikaci. Xposed umožňuje modulům provádět jejich vlastní metody před, během nebo místo původní metody cílové aplikace.
Představte si například metodu používanou v aplikaci Gmail, která odesílá upozornění na nové e-maily. Ve výchozím nastavení metoda vytvoří nové oznámení s tlačítky pro archivaci/smazání nebo odpověď na e-mail. Modul Xposed by se mohl připojit k této metodě a přidat nové tlačítko, například „označit jako přečtené“. (Ano, je již modul právě pro to.)
Výše uvedené je přílišné zjednodušení konečného výsledku toho, co Xposed Framework umožňuje svým modulům dělat. Samotný rámec je neuvěřitelně složitý a díky němu funguje téměř univerzálně na zakořeněných zařízeních – bez nutnosti vlastní paměti ROM – proto trvalo dokončení Xposed pro Android Nougat tak dlouho.
Proč vývoj Xposed trvá tak dlouho?
Kouzlo za Xposed – to, co umožňuje modulům připojit se k metodám jiných aplikací – vyžaduje hluboké znalosti o tom, jak Zygote a Android Runtime (ART) funguje. Tyto požadavky již znemožňují, aby se na projektu podílelo velké množství lidí, ale problém je ještě umocněn skutečností, že rovo89 byl hlavním přispěvatelem do Xposed posledních 5 let.
To je důvod, proč byly výzvy k otevřenému získávání jeho úprav provedených na Xposed od posledního veřejného vydání Xposed zamítnuty. Je to jeho duchovní dítě a on je nejlepší v tom, jak tomu porozumět a upravit to, takže přidat do projektu více pracovních sil v tak pozdní fázi může projekt jednoduše dále oddálit.
Navíc, pokud rovo89 neustále aktualizuje svůj zdroj, měl obavy že by někdo vzal nedokončený kód k sestavení polofunkčního Xposed Frameworku bez univerzálního Xposed Installer, který by jej doprovázel. (Přesná věc se stejně stala s implementací abforce a výsledná změť různých instalačních metod ospravedlnila váhání rovo89.)
Takže to nejlepší, co jsme mohli udělat, bylo dát rovo89 čas na práci na svém mazlíčkovém projektu. Xposed není jeho práce na plný úvazek, ani na částečný úvazek. Je to prostě koníček, který dělá ve prospěch komunity 5 let. Projekt tak složitý, jako je Xposed, vyžaduje čas na práci a následné testování – čas, který často neměl kvůli svým dalším povinnostem. Pokrok byl vytvořený v průběhu minulého roku, stejně jako rovo89 zdokumentoval v několika svých veřejných aktualizacích k tomuto problému, až nakonec jsou připraveny k vydání jak samotný Xposed Framework, tak Xposed Installer.
Co udělal rovo89, aby Xposed pracoval v Nougatu?
Nová vydání Androidu někdy přinášejí změny ve způsobu, jakým ART funguje, což může vyžadovat přepracování částí Xposed. Android 7.0 Nougat představil kompilátor Just-in-Time pro ART, který například pomáhá zlepšit běh aplikací. Ale neoficiální Xposed Framework od abforce jednoduše deaktivuje mnoho optimalizací ART, takže hákování metod může fungovat správně.
Naproti tomu implementace rovo89 zachovává všechny optimalizace ART v Android Nougat překompilováním volajícího metody pomocí JIT a stále mít na svém místě háčky metody. To znamená, že si můžete užívat výhod modulu Xposed, aniž byste museli obětovat výkon nuceným deaktivováním optimalizací ART.
Pro další podrobnosti o tom, co rovo89 udělal, aby konečně dosáhl spolehlivé metody hákování v Xposed pro Android Nougat, doporučujeme přečíst si níže uvedené prohlášení, které nám poskytl.
Celé vyjádření z rovo89
Jádrem Xposed je zjevně jeho schopnost připojit metody Java, tj. nechat moduly spustit kód před, po nebo místo těchto metod. Na tom jsou založeny téměř všechny ostatní funkce, takže je důležité, aby vždy fungovaly podle očekávání. Obecný koncept je stejný od doby, kdy jsem před pěti lety vynalezl Xposed, vyžaduje změnu vstupního bodu metody. To začíná selhávat, když není vstupní bod kontrolován během provádění – což je ve skutečnosti případ některých optimalizací v ART.
Jedním příkladem je, když je vstupní bod znám již v době kompilace, pak mohou volající přímo přeskočit na tuto adresu, aniž by ji vyhledávali. Dalším příkladem je inlining. Zvažte tento příklad:
ART je dostatečně chytrý, aby si všiml, že metoda double() je velmi jednoduchá, a proto vkládá logiku přímo do metody doSomething(), jako je tato:
Metodu double() můžete stále připojit, ale za běhu již nebude volána z doSomething() a vaše zpětné volání také ne. ART je ještě chytřejší: Uvědomuje si, že magie je vždy 42, a proto podmínka nemůže být nikdy splněna. Takže celá metoda doSomething() je vlastně neoperativní:
V předchozích verzích Xposed tyto optimalizace úplně zakázal a vynutil si rekompilaci všeho. To přineslo několik nevýhod. Za prvé, vývojáři ART odvádějí fantastickou práci při maximalizaci výkonu se svými optimalizace a jejich deaktivace částečně nutně vede k nižšímu výkonu (nikdy jsem neměřil, o kolik ačkoli). Samotná rekompilace pak není vždy snadná a způsobila mi spoustu bolestí hlavy, zejména na začátku. Konečně rekompilované soubory zabírají místo navíc k předkompilovaným souborům v /system.
Neoficiální verze pro Nougat také tyto optimalizace zakazují, ale nevynucují si rekompilaci (protože port byl původně vyroben pro integraci do ROM). Proto se někdy háky nemusí spustit.
S oficiální verzí si udržíte optimalizovaný kód a stále budete mít spolehlivé háčky. Jak to funguje? Xposed zaznamenává všechny uskutečněné hovory. K tomu dochází při kompilaci souborů APK nebo v samostatném průchodu pro předem optimalizovaný kód. Tato další data nezabírají mnoho místa, ale umožňují Xposed zjistit, kde mohla být určitá metoda vložena. Takže když je metoda připojena, všichni její volající budou deoptimalizováni, tj. jejich kód již nebude používán. To zajišťuje, že zpětné volání zavěšení bude určitě zavoláno. A pokud je volající silně využíván, bude jednoduše překompilován pomocí JIT, tentokrát s vědomím, že metoda je zahnutá, a proto některé optimalizace neplatí. To znamená, že účinky hákových metod jsou omezeny na naprosté minimum. Hurá!
Nyní pokračujte a vyzkoušejte to. Ujistěte se, že používáte Xposed Installer 3.1.2, protože konfigurační cesta musela být změněna, aby podporovala File Based Encryption.
Přečtěte si více
Závěr
Doufáme, že jste stejně nadšení jako my ohledně vydání Xposed pro Android 7.X Nougat. Čekání bylo dlouhé, ale vzhledem k naprosté složitosti Xposed nevyhnutelné. Pokud stále nevíte, co je Xposed nebo jak funguje, nebojte se. Jen velmi málo lidí (včetně nás) skutečně chápe, jak to funguje. Vývojáři jako rovo89 dělají vše, co je v jejich silách, při balení své práce, takže opravdu nemusíte rozumět tomu, co se děje pod kapotou.
Líbí se vám Xposed Framework? Zvažte darování rovo89 za úžasnou práci, kterou dělá. Pokud si myslíte, že máte na to, abyste přispěli do projektu, podívejte se na stránku GitHub rovo89 níže.
Přispějte na rovo89
Přispějte do Xposed
Hledáte moduly Xposed? Podívejte se na naše subforum Xposed Framework Module nebo si stáhněte aplikaci XDA Labs a prohlédněte si naši sbírku modulů Xposed.
Fórum Xposed Modules
Stáhněte si XDA Labs
Android Oreo Progress
V případě, že vás to zajímá, zde je postup při získávání Xposed pro Android Oreo:
Již jsem začal pracovat na Androidu 8.0. Je tu pár nové jazykové funkce že se na to budu muset podívat, ale obecný koncept by měl stále fungovat. To zahrnuje veškerou práci na zneplatnění zkompilovaného kódu všech volajících, když je metoda připojena, což zabralo zdaleka nejvíce času, když jsem pracoval na Nougatu. Takže jsem si opravdu jistý, že tentokrát budu mnohem rychlejší. Android 8.1by se nemělo moc lišit, takže od toho neočekávám moc práce navíc.