Xposed Framework for Nougat & abforce Undermodul forklaret

I denne artikel undersøger vi forskellene mellem rovo89s kommende Xposed for Nougat-udgivelse og den nuværende implementering, der er tilgængelig til Nougat.

Xposed-rammen var - og er stadig - en vigtig måde at tilpasse din Android-enhed på, kompatibel med stort set alle enheder, så du nemt kan installere moduler for at finjustere stort set enhver detalje.

Vil du have alle de funktioner, en brugerdefineret ROM tilbyder uden at skulle flashe en?GravityBox ellerXTouchwiz vil gøre det. Vil du justere visse indstillinger pr. app, som f.eks. at ændre en specifik apps DPI?App-indstillinger har du dækket. Ønske, at en applikations udviklere tænkte på at tilføje en specifik funktion, som f.eks. Google giver dig lovtilpasse Hangouts eller Facebook, så du kandownload Instagram-opslag, du kan lide? Nå, det behøver du ikke, fordi Xposed giver udviklere magten til at ændre stort set alt, hvad de gør ønsker, det være sig en systemdækkende funktion, der ville kræve en brugerdefineret ROM, eller en tweak for en bestemt Ansøgning.

Xposed-rammeværket kommer med en stor fordel for udviklere, som er den nemme udvikling (sammenlignet med at skulle kompilere AOSP til ROM-tweaks eller at skulle redigere Smali-kode). Det giver også en stor fordel for brugerne: bekvemmelighed, da det ikke længere tvinger dem til at finde og flashe den ROM, der giver hver eneste funktion, de leder efter (i stedet kan de blande og matche uafhængige moduler) oven i deres målbalance af stabilitet og ydeevne. Det gør også tweaking applikationer meget nemmere, da der ikke er behov for at håndtere forskellige signaturer, hvilket som et resultat ville kræve, at brugerne afinstallerer originalen version eller spring gennem visse rammer, når applikationen tjekker sin signatur (noget ændrede YouTube-klienter håndterer, f.eks. eksempel).

Det eneste problem? På grund af dets natur og mængden af ​​fritid Xposeds udvikler (vores egen Senior Recognized Developer,rovo89) har, halter det ofte efter Android-udgivelser.Det tog omkring fire måneder at blive opdateret til at understøtte Lollipop, og det tager omkring et år at komme til Nougat. Dette er ikke så slemt, som det kan se ud, hvis du tænker dig om hvor mange Android-brugere der faktisk er på Nougat (omkring 13,5 %, men husk på Android-entusiaster, Xposeds målgruppe, er også mere tilbøjelige til at være på Nougat). Det kan dog stadig være ret irriterende ikke at kunne bruge dine foretrukne Xposed-moduler og have den nyeste og bedste Android-version på samme tid.

Med kildekoden til Xposed-rammerne tilgængelig (i det mindste for stabile, frigivne versioner), udviklerkraftig besluttede at få sine hænder beskidte og se, om han kunne overføre nogle af rovo89s modifikationer til Nougat. Ved at vælge en anden og enklere tilgang tilpassede abforce i det væsentlige den del af Xposed, der faktisk udfører magien, når den er installeret, og gjorde det muligt at inkludere den, når du kompilerer din egen ROM (derefter, andre løsninger dukkede op). Denne tilgang er uden tvivl meget anderledes da den ignorerer en af ​​Xposeds kernefordele, som er at være tilgængelig for alle med lethed. Men alle fremskridt er velkommen, og flere hoveder, der tager fat på en opgave, kan være fordelagtige og give ny indsigt. Hovedproblemet, som vi ser det, er misinformationen omkring denne udvikling (spredt af nogle andre "udviklere" og nogle blogs), såvel som nogle af reaktionerne fra fællesskabet. Forhåbentlig vil denne artikel gøre hele billedet klarere.


Først og fremmest, for at forstå det arbejde, der gik - og stadig går - ind i den officielle Xposed-ramme såvel som abforces version, skal vi se på, hvordan rammen fungerer. Mens selve rammen er kun en del af projektet, vi mener normalt både rammen og installatøren da rammen mister mange af sine fordele uden den universelle installatør, hvilket der også er meget arbejde med.

Kraften ved Xposed kommer fra et simpelt koncept: enhver metode kan "hookes" (metoder er de små dele, der udgør ethvert program) for at få et Xposed-moduls kode til at køre før, efter eller i stedet for det. Lad os tage et simpelt eksempel: antag, at Instagram bruger en metode kaldet "showMenuOptions", når du klikker på menuknappen, og den metode håndterer at vise dig knapperne "Rapporter" og "Del". Ved at oprette et Xposed-modul kan du ændre denne metode for at tilføje en ekstra knap til at downloade billedet i stedet for for eksempel at dele det. Ændringerne kan variere fra simple tweaks (f.eks. Play Butik Changelog) til større eftersyn (som f.eks GravityBox, som har til formål at give alle de funktioner, en brugerdefineret ROM ville have)!

Det gør Xposed kraftfuld, men det er kun en del af ligningen. De andre dele er alsidighed - eller faktisk at kunne bruge Xposed på stort set enhver enhed derude (med en understøttet Android-version) og brugervenlighed. Det eneste, brugerne skal gøre, er at få fat i installationsprogrammet, som gør sin magi og patcher deres system dynamisk for at integrere Xposed. For at anvende et modul skal du blot installere det, aktivere det og genstarte. Ingen besvær påkrævet, ingen grund til at flashe en brugerdefineret ROM (især når brugerdefinerede ROM'er ikke altid er et holdbart valg), ingen grund til at afinstallere en APK for at installere en anden signeret med en anden signatur. Alt du behøver er root (du kan absolut have en brugerdefineret ROM, og det giver mening meget af tiden; men mens Xposed kan levere det meste af den funktionalitet en brugerdefineret ROM kan levere, går det også ud over det).

Bag denne enkelhed ligger dog en masse arbejde:

  1. For moduludviklere skal den leverede API være stabil og garanteret at fungere. Xposed-rammeværket kan ikke tilfældigt fejle med visse ROM- og/eller hook-kombinationer (undtagen i undtagelsestilfælde). Med andre ord, hvis en bruger har et problem, bør det problem enten være brugerens skyld (for ikke installation/aktivering af noget korrekt) eller moduludviklerens fejl (for at have fejl i modul). Men det burde være næsten sikkert, at selve rammen fungerer efter hensigten og ikke er kilden til de fejl, der ville efterlade brugerne frustrerede og udviklere forvirrede.
  2. For brugere skal rammeværket være nemt at installere på deres enhed og ROM, uanset om de har en Samsung, der kører den nyeste version af TouchWiz, eller en Nexus med LineageOS installeret. Xposed-installationsprogrammet håndterer alt det bag kulisserne. Der skal gå meget arbejde i dette for at teste installationsprogrammet og rammeværket på en række forskellige enheder og ROM-kombinationer. Der findes fejl, ofte på grund af forskellige implementeringer af OEM'er, og skal rettes for at sikre pålidelighed for alle brugere.
  3. Større Android-revisioner kan nogle gange medføre store ændringer, hvilket kræver genovervejelse af dele af rammeværkets arkitektur for at tilpasse sig disse ændringer. Nogle gange dukker der også yderligere muligheder op med nyere versioner, hvilket kræver lidt ekstra tid for at få et bedre produkt. Da ART blev introduceret for første gang, havde Xposed for eksempel deaktiveret visse optimeringer, så hooking kan fungere korrekt. I Nougats tilfældejust-in-time (JIT) compiler giver mulighed forbeholde disse optimeringer.

Meget af ovenstående arbejde går ind i mindre detaljer, hvor det meste af rammeværket fungerer efter hensigten, men det uoverensstemmelser og mindre problemer ville gøre det til et gamble at bruge for brugere og et support- og udviklingsmareridt for modulet udviklere. Det frigivne produkt sigter dog mod at kunne bruges af alle og uden overraskelser. Der er selvfølgelig nogle undtagelser, da nogle OEM'ers ændringer kræver en større indsats at tilpasse sig, men de er mindre, og langt de fleste brugere (og udviklere) får glæde af en stabil og pålidelig Xposed erfaring. Eventuelle stødte undtagelser bliver dokumenteret medklare ansvarsfraskrivelser så ingen bliver overrasket.

Med ovenstående i tankerne er rovo89s vision for Xposed at være en stabil løsning, der giver en pålidelig og brugervenlig kontrakt for brugere og udviklere. Hans filosofi, selvom du måske er uenig i den, er enkel og forståelig: et produkt skal være det frigives, når den er klar til at blive brugt efter hensigten, da frigivelse af den før fører til flere problemer end fordele.


abforces Xposed ART-undermodul til Nougat

Vi er tilbageholdende med at kalde abforces arbejde for en "havn" eller en "uofficiel Xposed", da det er unøjagtigt og vildledende. Som vi har set, har Xposed to hovedkomponenter:

  1. Kernen i selve Xposed-rammeværket, som håndterer magien ved hooking-metoder.
  2. Xposed-installationsprogrammet, som sikrer, at rammen er nem at installere på alle enheder korrekt.

Hvad abforce gjorde, var at overføre rovo89s Marshmallow-kode på den første del (kun Xposed-rammeværket) til Nougat, på en måde, der ville kræve, at ændringerne blev bagt, mens den tilpassede ROM kompileredes. Derudover er mange mindre (men vigtige) dele af rammen ikke fuldt tilpasset Nougat. Som sådan kan adfærd være inkonsekvent, og mens den for det meste virker (dog ikketilalle sammen), det er ikke pålideligt. For moduludviklere og -brugere ville det bare være at stole på en ufuldstændig og inkonsekvent implementering give en dårlig oplevelse for alle involverede parter, med nogle moduler virker slet ikke eller får enheden til ikke at starte. Mens mange brugere kan være okay med at have noget frem for ingenting, er udviklernes synspunkt stadig helt forståeligt (især hvis du husker på, at ansvarsfraskrivelser ikke stopper falske supportspørgsmål og klynkeri).

(Ud over de ovennævnte to hovedpunkter, forventer vi også yderligere ændringer til den endelige, officielle Xposed-ramme for at drage fordel af ændringer introduceret i Nougat.)

Det skal bemærkes, at abforce gjorde et fremragende stykke arbejde, når de fleste nøjedes med at tale, men hans arbejde er langt fra den fulde Xposed-oplevelse, og ingen udvikler eller blog påstår noget andet (og bestemt ikke abforce; igen, vi har intet andet end respekt over for alle de faktiske udviklere, der lægger virkelig arbejde og kræfter i dette). Faktisk, som vi vil komme ind på om lidt, er noget af fællesskabets reaktion (det være sig brugere eller "udviklere") den eneste sure del i denne udviklingskæde.


Lad os skære igennem jagten og komme direkte til sagen: ethvert fællesskab har dårlige elementer og aspekter. Med et lige så stort fællesskab som Android-entusiaster, kan de dårlige elementer virke som en stor del, når de kun er en lille del (stor, men stadig mindre i relative termer). Uden at have overtrukket det, har meget af samfundets reaktion på udviklingen af ​​Xposed for Nougat været ekstremt barnlig, hensynsløs eller uansvarlig.

Det første store problem har været den nedladende holdning, som mange har vist om "Xposeds død", fordi det tager for lang tid at blive frigivet til Nougat. Dette er på trods af rovo89's opdateringerogforsikringer, og på trods af stort set det nøjagtige scenarie, der skete med Lollipop, da den første version af ART blev introduceret. Det er fint at stoppe med at bruge Xposed, men det er ikke for at fornærme nogens evner eller angribe andre for at have en anden filosofi eller ikke sikre, at dine blinkende behov bliver opfyldt med det samme. Dette gælder i endnu højere grad for et helt gratis projekt, hvor udvikleren har givet udtryk for sin udviklingsmetodik og årsagerne bag den.

Et andet problem med fællesskabets reaktion har været at misforstå arten af ​​abforces arbejde, hvor mange hyldede det som den nye Xposed eller reklamerede for det som en havn for Nougat. Et stort problem med dette har været med "udviklere", der skynder sig at tilbyde flashbare versioner uden at forstå (eller bekymre sig om) ulemperne, da der ikke var nogen ansvarsfraskrivelser. tilbydes overhovedet i nogle tråde, hvor nogle endda går så langt som til at kreditere abforce og ikke rovo89 (som står bag langt størstedelen af ​​arbejdet på Xposed) og andre bidragydere.

Som et sidste punkt mener vi, at vi bør tage rovo89's udviklingsfilosofi op igen. Med mange vokale brugere, der hævder, at det ville være en fordel at have de seneste ændringer i open source. Selvom dette lyder godt i teorien, er det detikke så let i praksis især hvis vi overvejer rovo89s forklaring:

[...] Jeg tror, ​​at blot at skubbe den nuværende tilstand ud ville ikke hjælpe projektet. Vi ville måske se "nogle" frigives virkelig hurtigt af folk, der kompilerer koden, og ser, at det ser ud til at være det fungerer fint og udgiv det som "deres havn", på trods af de problemer og ting, de ikke ville være klar over af. Så kald mig egoistisk, men jeg ville ikke se sådan en halvfærdig udgivelse.[Kilde]

Hvilket faktisk har vist sig at være en ret god forudsigelse af den nuværende situation, hvor flere "udviklere" har ansøgt abforces ændringer og tilbyder en flashbar ZIP med minimale eller ingen advarsler, ufuldstændige krediteringer, alt imens du beder om donationer.


Vi håber, at disse forklaringer ryddede nogle af dine tvivlsspørgsmål op og adresserede mulige misforståelser, du måtte have haft. Xposed har været et fantastisk projekt, der har nået en stor del af vores entusiast- og flashaholic-fællesskab, og Xposed for Nougat burde være endnu en gigantisk milepæl fuld af muligheder. Med moduler som GravityBox allerede tilbyder Nougat-support, vil rovo89s færdige projekt vende tilbage til en række muligheder.


Er du begejstret for Xposed på din Nougat ROM? Fortæl os det i kommentarerne!