Neuradno ogrodje Xposed za Android 7.1 Nougat

Zdaj je na voljo flashable zip, ki prinaša Xposed Framework v ROM-e Android 7.1 Nougat. Zip deluje tako na OnePlus 3T kot tudi na številnih drugih telefonih!

Po mesecih in mesecih čakanja smo končno dobili podporo Xposed Framework za Nougat ROM-e (čeprav neuradno). Zahvaljujoč nekaterim nadarjenim razvijalcem na naših lastnih forumih XDA lahko zdaj namestite Xposed Framework na Android Nougat ROM prek flashable zip.

Do zdaj je bila prihodnost za Xposed na Nougatu videti nekoliko majava. Rovo89 - razvijalec za Xposed Framework - pred nekaj več kot tednom dni zagotovil posodobitev podpore za Android Nougat. Rovo89 je v bistvu izjavil, da je treba opraviti še veliko dela, da bo Xposed pravilno deloval na Nougatu, in da bomo morali biti le potrpežljivi.

K sreči je videti, da smo dobili začasno rešitev za tiste med nami, ki smo nestrpno čakali na začasni ukrep. Ekipa PurifyOS je zgrabila modul ART tega razvijalca abforce je delal na (in o tem je bilo objavljeno prej danes), in ga prilagodili tako, da ga je mogoče namestiti na druge ROM-e po meri prek flashable zip (namesto da bi ga bilo treba implementirati pri prevajanju ROM-a).

Trenutno so na voljo tri različice za različne platforme, vključno z Xposed SDK25 ARM64, Xposed SDK25 ROKAin Xposed SDK25 x86. Ekipa PurifyOS je preizkusila to novo različico Xposed z OnePlus 3T z operacijskim sistemom OxygenOS, ki temelji na sistemu Android 7.1, vendar bi morala delovati na drugi telefoni z operacijskim sistemom Android Nougat in uporabniki že poročajo, da jim ga je uspelo uspešno namestiti na različne ROM-e in naprave. Na primer, nekaj uporabnikov OnePlus 5 je poročalo, da deluje (ni presenetljivo, glede na to, da deluje na OnePlusu 3T v redu), vendar je uporabnik, ki uporablja ROM, ki temelji na AOSP, za Samsung Galaxy S6 poročal, da je deloval tudi pri njih.

Prišlo bo do nenavadnosti, ki jih je treba ugotoviti, in do zdaj ni vsem uspelo omogočiti, da deluje, nekateri uporabniki se soočajo s prisilnimi zapiranji in drugimi nenavadnostmi. Kljub temu pa lahko še vedno poskusite, če ste čakali na prihod Xposed na Nougat vse od izdaje prejšnje različice operacijskega sistema Android. Vsi obstoječi moduli Xposed Framework ne bodo delovali takoj, vendar naj bi nekateri zelo priljubljeni, kot je Amplify, delovali.

Ne pozabite redno izdelovati varnostnih kopij in natančno preberite nit, preden se lotite, če niste prepričani, ali je vaša naprava ali ROM podprt. Na koncu se prepričajte, da uporabite funkcijo "iskanje", preden zapustite podvojeno vprašanje. Android O je morda tik za vogalom, a kot pravi pregovor, "bolje pozno kot nikoli." Poleg tega veliko uporabnikov še kar nekaj časa ne bo videlo Androida O na svojih napravah, zato bi moral biti Xposed dobra poslastica, da se ne boste počutili zapostavljene.


Posodobitev: Odgovor Rovo89

Izvirnik, razvit v ozadju Xposed Framework, starejši priznani razvijalec XDA rovo89, se je na Githubu odzval s svojimi mislimi o teh nedavnih dogodkih.

Iz lastnih izkušenj vam lahko povem, da osnov res ni tako težko narediti, a podrobnosti vzamejo hudičevo veliko časa. To je kot pravilo 80-20, le da je bolj podobno 95-5 ali tako.

Pristop povezovanja, ki sem ga oblikoval za prejšnje izdaje, je precej stabilen in ga je mogoče uporabiti tudi za novejše izdaje. Predvidevam, da ste potrebovali večino časa, da preverite vsa mesta, kjer IsProxyMethod() in IsDirect() pokličejo in se odločijo, ali naj upoštevajo nov modifikator metode ali ne (tj. uporabi parameter true ali ne). Če tega ne bi storili, bi morda spregledali kje so na novo uvedli takšne razpise. Enako za metode, kot je InstallStubsForMethod(), ki mora delovati na izvirni izvirni metodi, tudi ko je poklican za zasvojeno metodo. Morali bi preveriti več mest, kjer bi to lahko bilo pomembno. To je še v razponu dni, a če tega zamudite, boste morda videli prikrite zrušitve ali napačno vedenje, ki jih je zelo težko odpraviti.

Poleg tega ste ubrali pristop, pri katerem bi kljuke pravilno delovale samo za ROM-e, ki so v celoti prevedeni iz nič. Na osnovnih ROM-ih in celo večini ROM-ov po meri (ki med gradnjo niso vključevali vaših vrat), kot tudi za vse aplikacije, ki jih je naprava morda prevedla prej. Torej bi morali začeti znova z izbrisano napravo, ki poganja poseben ROM. V nasprotnem primeru lahko optimizacije (npr. vstavljanje) preprečijo, da bi se metoda sploh poklicala, zato kljuke ne bi delovale. Najslabše pri tem je, da bi bilo natančno vedenje odvisno od ROM-a ali celo od tega, kako uporabnik uporablja napravo (zdaj, ko so aplikacije sestavljene na podlagi profilov). Moduli bi naključno odpovedali in razvijalci modulov bi se spraševali, kaj so storili narobe (odgovor: nič). Če niso izpolnjeni vsi predpogoji, je API precej nezanesljiv. Predstavljajte si, da je Google objavil posodobitev, kjer je OnClickListener gumb včasih ni bil priklican, razen če si svoj ROM prevedel iz nič... Zame osebno je to velika omejitev.

Nadaljuje:

S tem sploh ni smiselno objavljati bliskovnih ZIP-jev, saj so vrata namenjena samo ponovnemu prevajanju ROM-a iz nič.

In kot sem se bal, ni niti enega opozorila, da gre za nepopolna vrata, ki pogosto ne izpolnjujejo pogodbe API. 😠 To je slabo za razvijalce in uporabnike, morali bi vsaj vedeti, da je nepopoln, da se lahko odločijo, ali ga želijo podpirati/uporabljati. Nikoli si ne bi upal storiti česa takega brez velikega debelega opozorila. Pravzaprav, ker sem precej perfekcionist, nepopolne verzije sploh ne bi objavil, zanesljivost mi je zelo pomembna.

Pravkar sem preveril svoj dnevnik Git in oktobra sem imel pripravljeno osnovno povezovanje (kot v tem pristanišču). Od takrat sem delal na odpravljanju omejitev. Da bi bil bolj zanesljiv na vnaprej prevedenih ROM-ih, bi lahko prenesel tudi del za ponovno prevajanje, vendar to še vedno ni idealno. Kot je razloženo nekje zgoraj, imamo zdaj JIT, ki nam omogoča, da ohranimo vse optimizacije, samo razveljavimo (in po možnosti ponovno prevedemo) metode, na katere neposredno vpliva povezovanje. To je precej zahtevno, saj je več kot le kopiranje in lepljenje. In dokler se to ne naredi, ne bom ničesar objavil. 9 mesecev za to (do zdaj) je res dolga doba, vem, ampak hej, to je moj prosti čas in npr. zaradi selitve v v novem stanovanju, več mesecev (!) sploh nisem mogel delati na Xposedu, drugače pa sem imel zelo omejen čas.

Pojasniti moramo, da ti nedavni dogodki niso pravi "Xposed", ki ga vsi poznate in ljubezen, vendar vam funkcionalno omogočajo uporabo nekaterih modulov Xposed Framework prav zdaj v sistemu Android Nougat. Ne bomo vam očitali, da niste čakali na uradno, stabilnejšo in bolj združljivo različico Xposed Framework za Android Nougat, vendar želimo jasno povedati, da je ta ponovitev le vmesni ukrep, namenjen zadovoljitvi potreb nekaterih uporabnikov zdaj. Xposed verjetno ne bo obravnavan v prihodnosti.


Prenesite neuradno ogrodje Xposed za Nougat na forumih XDA