I den här artikeln utforskar vi skillnaderna mellan rovo89s kommande Xposed for Nougat-utgåva och den nuvarande implementeringen som är tillgänglig för Nougat.
Xposed-ramverket var – och är fortfarande – ett viktigt sätt att anpassa din Android-enhet, kompatibel med i stort sett alla enheter, så att du enkelt kan installera moduler för att justera praktiskt taget alla detaljer.
Vill du få alla funktioner som en anpassad ROM erbjuder utan att behöva flasha en?GravityBox ellerXTouchwiz kommer att göra det. Vill du justera vissa inställningar per app, som att ändra en specifik apps DPI?App inställningar har du täckt. Önskar att en applikations utvecklare tänkte lägga till en specifik funktion, som att Google låter diganpassa Hangouts eller Facebook så att du kanladda ner Instagram-inlägg du gillar? Tja, du behöver inte eftersom Xposed ger utvecklare möjlighet att modifiera i stort sett allt de vill, vare sig det är en systemomfattande funktion som skulle kräva ett anpassat ROM, eller en tweak för en specifik Ansökan.
Xposed-ramverket kommer med en stor fördel för utvecklare, vilket är den enkla utvecklingen (jämfört med att behöva kompilera AOSP för ROM-justeringar eller att behöva redigera Smali-kod). Det ger också en stor fördel för användarna: bekvämlighet, eftersom det inte längre tvingar dem att hitta och flasha ROM-skivan som tillhandahåller varje enskild funktion de letar efter (istället kan de blanda och matcha oberoende moduler) på toppen av deras målbalans av stabilitet och prestanda. Det gör också tweaking applikationer mycket lättare eftersom det inte finns något behov av att hantera olika signaturer, vilket som ett resultat skulle kräva att användarna avinstallerar originalet version eller hoppa genom vissa ramar när programmet kontrollerar sin signatur (något modifierade YouTube-klienter hanterar, t.ex. exempel).
Det enda problemet? På grund av sin natur och mängden ledig tid Xposeds utvecklare (vår egen Senior Recognized Developer,rovo89) har, släpar det ofta efter Android-släpp.Det tog ungefär fyra månader att bli uppdaterad för att stödja Lollipop, och det tar ungefär ett år att komma till Nougat. Det här är inte så illa som det kan verka om du tänker efter hur många Android-användare som faktiskt har Nougat (runt 13,5 %, men kom ihåg att Android-entusiaster, Xposeds målgrupp, också är mer benägna att vara på Nougat). Det kan dock fortfarande vara ganska irriterande att inte kunna använda dina favorit Xposed-moduler och samtidigt ha den senaste och bästa Android-versionen.
Med källkoden för Xposed-ramverket är tillgänglig (åtminstone för stabila, släppta versioner), utvecklarekraftfull bestämde sig för att smutsa ner händerna och se om han kunde porta några av rovo89:s modifieringar till Nougat. Genom att välja ett annat och enklare tillvägagångssätt anpassade abforce i huvudsak den del av Xposed som faktiskt gör magin en gång installerad och gjorde det möjligt att inkludera det när du kompilerar din egen ROM (efter det, andra lösningar dök upp). Detta tillvägagångssätt är utan tvekan mycket annorlunda eftersom den ignorerar en av Xposeds kärnfördelar, som är lätt tillgänglig för alla. Men alla framsteg är välkomna och flera chefer som tar sig an en uppgift kan vara fördelaktigt och erbjuda ny insikt. Huvudfrågan, som vi ser det, är desinformationen kring denna utveckling (spridd av några andra "utvecklare" och vissa bloggar), såväl som några av reaktionerna från samhället. Förhoppningsvis kommer den här artikeln att göra hela bilden tydligare.
Först och främst, för att förstå arbetet som gick – och fortfarande går – in i det officiella Xposed-ramverket såväl som abforces version, måste vi titta på hur ramverket fungerar. Medan själva ramverket är endast en del av projektet, vi menar vanligtvis både ramverket och installatören eftersom ramverket förlorar många av sina fördelar utan den universella installatören, vilket det också ligger mycket arbete på.
Kraften i Xposed kommer från ett enkelt koncept: vilken metod som helst kan "hakas" (metoderna är de små delar som utgör ett program) för att få en Xposed-moduls kod exekverad före, efter eller istället för Det. Låt oss ta ett enkelt exempel: anta att Instagram använder en metod som heter "showMenuOptions" när du klickar på menyknappen, och den metoden hanterar att visa knapparna "Rapportera" och "Dela". Genom att skapa en Xposed-modul kan du modifiera den metoden för att lägga till en extra knapp för att ladda ner bilden istället för att till exempel dela den. Ändringarna kan sträcka sig från enkla justeringar (t.ex. Play Butiks ändringslogg) till större översyn (som t.ex GravityBox, som syftar till att tillhandahålla alla funktioner en anpassad ROM skulle ha)!
Det gör Xposed kraftfull, men det är bara en del av ekvationen. De andra delarna är mångsidighet - eller faktiskt att kunna använda Xposed på i stort sett vilken enhet som helst där ute (med en Android-version som stöds), och användarvänlighet. Allt användare behöver göra är att ta tag i installationsprogrammet, som gör sin magi och patchar deras system dynamiskt för att integrera Xposed. För att applicera en modul behöver du bara installera den, aktivera den och starta om den. Inget krångel krävs, inget behov av att flasha ett anpassat ROM (särskilt när anpassade ROM inte alltid är ett genomförbart val), inget behov av att avinstallera en APK för att installera en annan signerad med en annan signatur. Allt du behöver är root (du kan absolut ha en anpassad ROM och det är vettigt mycket av tiden; men medan Xposed kan tillhandahålla det mesta av funktionaliteten som en anpassad ROM kan tillhandahålla, går den också längre än så).
Men bakom denna enkelhet ligger mycket arbete:
- För modulutvecklare måste det tillhandahållna API: et vara stabilt och garanterat fungera. Xposed-ramverket kan inte slumpmässigt misslyckas med vissa ROM- och/eller hook-kombinationer (förutom i undantagsfall). Med andra ord, om en användare har ett problem, bör det problemet antingen vara användarens fel (för inte installera/aktivera något korrekt) eller modulutvecklarens fel (för att ha buggar i modul). Men det borde vara nästan säkert att själva ramverket fungerar som det är tänkt och att det inte är källan till de fel som skulle göra användarna frustrerade och utvecklare förvirrade.
- För användare måste ramverket vara lätt att installera på sin enhet och ROM, oavsett om de har en Samsung som kör den senaste versionen av TouchWiz eller en Nexus med LineageOS installerat. Xposed-installationsprogrammet hanterar allt det där bakom kulisserna. Mycket arbete måste läggas på detta för att testa installationsprogrammet och ramverket på en mängd olika enheter och ROM-kombinationer. Fel hittas, ofta på grund av olika implementeringar av OEM, och måste åtgärdas för att säkerställa tillförlitlighet för alla användare.
- Större Android-revisioner kan ibland medföra stora förändringar, vilket kräver att delar av ramverkets arkitektur omprövas för att anpassa sig till dessa förändringar. Ibland dyker det också upp ytterligare möjligheter med nyare versioner, vilket kräver lite extra tid för att få en bättre produkt. När ART introducerades först, till exempel att ha Xposed inaktiverat vissa optimeringar så att hooking kan fungera korrekt. I Nougats falljust-in-time (JIT) kompilator ger en möjlighet tillbehålla dessa optimeringar.
Mycket av ovanstående arbete går in på mindre detaljer, där det mesta av ramverket fungerar som det är tänkt men inkonsekvenser och mindre problem skulle göra det till en chansning att använda för användare, och en support- och utvecklingsmardröm för modulen utvecklare. Den släppta produkten syftar dock till att vara användbar av alla och utan överraskningar. Det finns vissa undantag, naturligtvis, eftersom vissa OEM: ers förändringar kräver mer ansträngning att anpassa sig till, men de är mindre och de allra flesta användare (och utvecklare) får njuta av en stabil och pålitlig Xposed erfarenhet. Alla påträffade undantag dokumenteras medtydliga ansvarsfriskrivningar så att ingen blir förvånad.
Med ovanstående i åtanke är rovo89s vision för Xposed att vara en stabil lösning som ger ett pålitligt och lättanvänt kontrakt för användare och utvecklare. Hans filosofi, även om du kanske inte håller med om den, är enkel och begriplig: en produkt borde vara det släpps när den är redo att användas som avsett, eftersom att släppa den innan leder till mer problem än förmåner.
abforces Xposed ART-undermodul för Nougat
Vi är ovilliga att kalla abforces arbete för en "port" eller en "inofficiell Xposed" eftersom det är felaktigt och missvisande. Som vi har sett har Xposed två huvudkomponenter:
- Kärnan i själva Xposed-ramverket, som hanterar magin med hooking-metoder.
- Xposed-installationsprogrammet, som säkerställer att ramverket är lätt att installera på alla enheter korrekt.
Vad abforce gjorde var att överföra rovo89:s Marshmallow-kod på den första delen (endast Xposed-ramverket) till Nougat, på ett sätt som skulle kräva att ändringarna bakades under kompileringen av den anpassade ROM: en. Utöver det är många mindre (men viktiga) delar av ramverket inte helt anpassade till Nougat. Som sådant kan beteende vara inkonsekvent och medan det mestadels fungerar (dock inteföralla), det är inte tillförlitligt. För modulutvecklare och användare skulle det bara vara att förlita sig på en ofullständig och inkonsekvent implementering ge en dålig upplevelse för alla inblandade parter, med vissa moduler fungerar inte alls eller gör att enheten inte startar. Medan många användare kan vara okej med att ha något snarare än ingenting, utvecklarens synvinkel är fortfarande fullt förståelig (speciellt om du tänker på att ansvarsfriskrivningar inte stoppar falska supportfrågor och gnäll).
(Utöver de två huvudpunkterna ovan, förväntar vi oss också ytterligare förändringar av det slutliga, officiella Xposed-ramverket för att dra fördel av ändringar som införts i Nougat.)
Det bör noteras att abforce gjorde ett utmärkt jobb när de flesta nöjde sig med att bara prata, men hans arbete är långt ifrån den fullständiga Xposed-upplevelsen och ingen utvecklare eller blogg påstår något annat (och definitivt inte abforce; återigen, vi har inget annat än respekt för alla de faktiska utvecklarna som lägger verkligt arbete och ansträngning på detta). I själva verket, som vi kommer att beröra om lite, är en del av samhällets svar (vare sig det är användare eller "utvecklare") den enda sura delen i denna utvecklingskedja.
Låt oss skära igenom jakten och gå rakt på sak: alla gemenskaper har dåliga element och aspekter. Med en lika stor community som Android-entusiaster kan de dåliga elementen verka som en stor del när de bara är en liten del (stora, men fortfarande små i relativa termer). Utan att sockerbelägga det, men mycket av samhällets reaktion på utvecklingen av Xposed for Nougat har varit extremt barnslig, hänsynslös eller oansvarig.
Den första stora frågan har varit den nedlåtande attityden som många visat om "Xposeds död" eftersom det tar för lång tid att släppas för Nougat. Detta trots rovo89:s uppdateringarochförsäkringar, och trots att i stort sett det exakta scenariot inträffade med Lollipop när den första versionen av ART introducerades. Det går bra att sluta använda Xposed, men det är inte för att förolämpa någons förmåga eller attackera andra för att de har en annan filosofi eller inte ser till att dina blinkande behov uppfylls omedelbart. Detta är ännu mer sant för ett helt gratis projekt, där utvecklaren har uttryckt sin utvecklingsmetodik och skälen bakom det.
Ett annat problem med communityns svar har varit att missförstå arten av abforces arbete, och många hyllar det som den nya Xposed eller annonserar om det som en hamn för Nougat. Ett stort problem med detta har varit att "utvecklare" skyndade sig att erbjuda flashbara versioner utan att förstå (eller bry sig om) nackdelarna, eftersom inga friskrivningar var erbjuds överhuvudtaget i vissa trådar, med några som till och med går så långt som att kreditera abforce och inte rovo89 (som ligger bakom det stora flertalet av arbetet på Xposed) och andra bidragsgivare.
Som en sista punkt anser vi att vi borde ta upp rovo89:s utvecklingsfilosofi igen. Med många röstanvändare som hävdar att det skulle vara fördelaktigt att ha de senaste ändringarna med öppen källkod. Även om detta låter bra i teorin, så är det detinte lika lätt i praktiken speciellt om vi överväger rovo89s förklaring:
[...] Jag tror att bara att driva ut den nuvarande staten inte skulle hjälpa projektet. Vi skulle kanske se "någon" släppa riktigt snabbt av människor som kompilerar koden, ser att det verkar vara det fungerar bra och publicera det som "deras hamn", trots problem och saker att göra som de inte skulle vara medvetna om av. Så kalla mig självisk, men jag skulle inte vilja se en sådan halvfärdig release.[Källa]
Vilket faktiskt har visat sig vara en ganska bra förutsägelse av den nuvarande situationen, där flera "utvecklare" ansöker abforces ändringar och erbjuder en flashbar ZIP med minimala eller inga varningar, ofullständiga krediter, allt medan du ber om donationer.
Vi hoppas att dessa förklaringar löste några av dina tvivel och åtgärdade eventuella missuppfattningar som du kan ha haft. Xposed har varit ett fantastiskt projekt som har nått en stor del av vår entusiaster och flashaholic-gemenskap, och Xposed for Nougat borde vara ytterligare en gigantisk milstolpe full av möjligheter. Med moduler som GravityBox redan erbjuder Nougat-support, kommer rovo89s färdiga projekt att återgå till en mängd alternativ.
Är du exalterad över Xposed på din Nougat ROM? Låt oss veta i kommentarerna!