Xposed Framework for Nougat & abforce Submodule Forklart

I denne artikkelen utforsker vi forskjellene mellom rovo89s kommende Xposed for Nougat-utgivelse og den nåværende implementeringen som er tilgjengelig for Nougat.

Xposed-rammeverket var – og er fortsatt – en viktig måte å tilpasse Android-enheten din på, kompatibel med stort sett alle enheter, slik at du enkelt kan installere moduler for å justere praktisk talt alle detaljer.

Vil du få alle funksjonene en tilpasset ROM tilbyr uten å måtte flashe en?GravityBox ellerXTouchwiz vil gjøre det. Vil du justere visse innstillinger per app, som å endre DPI for en spesifikk app?Appinnstillinger har du dekket. Skulle ønske at utviklere av en applikasjon tenkte på å legge til en spesifikk funksjon, som at Google lar degtilpasse Hangouts eller Facebook som lar deglast ned Instagram-innlegg du liker? Vel, du trenger ikke fordi Xposed gir utviklere muligheten til å modifisere stort sett alt de ønsker, det være seg en systemomfattende funksjon som vil kreve en tilpasset ROM, eller en tweak for en bestemt applikasjon.

Xposed-rammeverket kommer med en stor fordel for utviklere, som er den enkle utviklingen (sammenlignet med å måtte kompilere AOSP for ROM-justeringer, eller å måtte redigere Smali-kode). Det gir også en stor fordel for brukerne: bekvemmelighet, siden det ikke lenger tvinger dem til å finne og flashe ROM-en som gir hver eneste funksjon de leter etter (i stedet kan de mikse og matche uavhengige moduler) på toppen av deres målbalanse av stabilitet og opptreden. Det gjør også tweaking applikasjoner mye enklere siden det ikke er nødvendig å håndtere forskjellige signaturer, noe som som et resultat vil kreve at brukere avinstallerer originalen versjon eller hoppe gjennom visse bøyler når applikasjonen sjekker signaturen (noe endrede YouTube-klienter håndterer, f.eks. forekomst).

Det eneste problemet? På grunn av sin natur og mengden ledig tid Xposeds utvikler (vår egen Senior Recognized Developer,rovo89) har, henger det ofte etter Android-utgivelser.Det tok omtrent fire måneder å bli oppdatert for å støtte Lollipop, og det tar omtrent et år å komme til Nougat. Dette er ikke så ille som det kan virke hvis du tenker deg om hvor mange Android-brukere faktisk er på Nougat (rundt 13,5 %, men husk at Android-entusiaster, Xposeds målgruppe, også er mer sannsynlig å være på Nougat). Det kan imidlertid fortsatt være ganske irriterende å ikke kunne bruke dine favoritt Xposed-moduler og samtidig ha den nyeste og beste Android-versjonen.

Med kildekoden til Xposed-rammeverket tilgjengelig (i det minste for stabile, utgitte versjoner), utviklerkraftig bestemte seg for å gjøre hendene skitne og se om han kunne overføre noen av rovo89s modifikasjoner til Nougat. Ved å velge en annen og enklere tilnærming, tilpasset abforce i hovedsak den delen av Xposed som faktisk gjør magien når den er installert, og gjorde det mulig å inkludere den når du kompilerer din egen ROM (etter det, andre løsninger dukket opp). Denne tilnærmingen er uten tvil svært forskjellig ettersom den ignorerer en av Xposeds kjernefordeler, som er lett tilgjengelig for alle. Men all fremgang er velkommen og flere hoder som takler en oppgave kan være fordelaktig og gi ny innsikt. Hovedproblemet, slik vi ser det, er feilinformasjonen rundt denne utviklingen (spredt av noen andre "utviklere" og noen blogger), samt noen av reaksjonene fra samfunnet. Forhåpentligvis vil denne artikkelen gjøre hele bildet klarere.


Først av alt, for å forstå arbeidet som gikk – og fortsatt går – inn i det offisielle Xposed-rammeverket så vel som abforces versjon, må vi se på hvordan rammeverket fungerer. Mens selve rammeverket er bare en del av prosjektet, vi mener vanligvis både rammeverket og installatøren som rammeverket mister mange av sine fordeler uten den universelle installatøren, som det også er mye arbeid med.

Kraften til Xposed kommer fra et enkelt konsept: enhver metode kan "hektes" (metoder er de små deler som utgjør et hvilket som helst program) for å få en Xposed-moduls kode til å kjøre før, etter eller i stedet for den. La oss ta et enkelt eksempel: anta at Instagram bruker en metode kalt "showMenuOptions" når du klikker på menyknappen, og den metoden håndterer å vise deg "Rapporter" og "Del"-knappene. Ved å lage en Xposed-modul kan du endre den metoden for å legge til en ekstra knapp for å laste ned bildet i stedet for å dele det, for eksempel. Endringene kan variere fra enkle justeringer (f.eks. Play Butikk endringslogg) til større overhalinger (som f.eks GravityBox, som har som mål å gi alle funksjonene en tilpasset ROM ville ha)!

Det gjør Xposed kraftig, men det er bare en del av ligningen. De andre delene er allsidighet - eller faktisk å kunne bruke Xposed på stort sett alle enheter der ute (med en støttet Android-versjon), og brukervennlighet. Alt brukerne trenger å gjøre er å ta tak i installasjonsprogrammet, som gjør sin magi og lapper systemet deres dynamisk for å integrere Xposed. For å bruke en modul trenger du bare å installere den, aktivere den og starte på nytt. Ingen oppstyr kreves, ingen grunn til å flashe en tilpasset ROM (spesielt når tilpassede ROM-er ikke alltid er et levedyktig valg), ingen grunn til å avinstallere en APK for å installere en annen signert med en annen signatur. Alt du trenger er root (du kan absolutt ha en tilpasset ROM, og det gir mening mye av tiden; men mens Xposed kan gi det meste av funksjonaliteten en tilpasset ROM kan gi, går det også utover det).

Bak denne enkelheten ligger det imidlertid mye arbeid:

  1. For modulutviklere må den angitte API-en være stabil og garantert fungere. Xposed-rammeverket kan ikke tilfeldig mislykkes med visse ROM- og/eller hook-kombinasjoner (bortsett fra i unntakstilfeller). Med andre ord, hvis en bruker har et problem, bør det problemet enten være brukerens feil (for ikke installere/aktivere noe riktig) eller modulutviklerens feil (for å ha feil i modul). Men det burde være nesten sikkert at selve rammeverket fungerer etter hensikten, og ikke er kilden til feilene som ville gjøre brukerne frustrerte og utviklere forvirret.
  2. For brukere må rammeverket være enkelt å installere på deres enhet og ROM, uansett om de har en Samsung som kjører den nyeste versjonen av TouchWiz eller en Nexus med LineageOS installert. Xposed-installasjonsprogrammet håndterer alt dette bak kulissene. Mye arbeid må legges ned i dette for å teste installasjonsprogrammet og rammeverket på en rekke enheter og ROM-kombinasjoner. Feil blir funnet, ofte på grunn av ulike implementeringer av OEM-er, og må fikses for å sikre pålitelighet for alle brukere.
  3. Store Android-revisjoner kan noen ganger føre til store endringer, noe som krever revurdering av deler av rammeverkets arkitektur for å tilpasse seg disse endringene. Noen ganger dukker det også opp flere muligheter med nyere versjoner, som krever litt ekstra tid for å få et bedre produkt. Da ART først ble introdusert, for eksempel, har Xposed deaktivert visse optimaliseringer slik at hooking kan fungere riktig. I Nougats tilfelle erjust-in-time (JIT) kompilator gir en mulighet tilbeholde disse optimaliseringene.

Mye av det ovennevnte arbeidet går inn på mindre detaljer, der det meste av rammeverket fungerer etter hensikten, men inkonsekvenser og mindre problemer ville gjøre det til et gamble å bruke for brukere, og et støtte- og utviklingsmareritt for modulen utviklere. Det utgitte produktet har imidlertid som mål å være brukbart av alle og uten overraskelser. Det er noen unntak, selvfølgelig, siden noen OEM-endringer krever mer innsats å tilpasse seg, men de er små og de aller fleste brukere (og utviklere) får glede av en stabil og pålitelig Xposed erfaring. Eventuelle unntak blir dokumentert medklare ansvarsfraskrivelser slik at ingen blir overrasket.

Med det ovennevnte i tankene, er rovo89s visjon for Xposed å være en stabil løsning som gir en pålitelig og brukervennlig kontrakt for brukere og utviklere. Filosofien hans, selv om du kanskje er uenig i den, er enkel og forståelig: et produkt skal være det frigis når den er klar til å brukes etter hensikten, da frigjøring før fører til mer problemer enn fordeler.


abforces Xposed ART-undermodul for Nougat

Vi er motvillige til å kalle abforces arbeid en "port" eller en "uoffisiell Xposed", da det er unøyaktig og misvisende. Som vi har sett, har Xposed to hovedkomponenter:

  1. Kjernen i selve Xposed-rammeverket, som håndterer magien med hooking-metoder.
  2. Xposed-installasjonsprogrammet, som sikrer at rammeverket er enkelt å installere på alle enheter riktig.

Det abforce gjorde var å overføre rovo89s Marshmallow-kode på den første delen (kun Xposed-rammeverket) til Nougat, på en måte som ville kreve at endringene ble bakt mens den tilpassede ROM kompileres. I tillegg til det er mange mindre (men viktige) deler av rammeverket ikke fullt tilpasset Nougat. Som sådan kan oppførsel være inkonsekvent og mens den stort sett fungerer (skjønt ikketilalle), det er ikke pålitelig. For modulutviklere og brukere ville det bare være å stole på en ufullstendig og inkonsekvent implementering gi en dårlig opplevelse for alle involverte parter, med noen moduler fungerer ikke i det hele tatt eller forårsaker at enheten ikke starter opp. Mens mange brukere kan ha det greit med noe heller enn ingenting, utviklerens synspunkt er fortsatt helt forståelig (spesielt hvis du husker at ansvarsfraskrivelser ikke stopper falske støttespørsmål og sutring).

(I tillegg til de to hovedpunktene ovenfor, vil vi også forvente ytterligere endringer i det endelige, offisielle Xposed-rammeverket for å dra nytte av endringer introdusert i Nougat.)

Det skal bemerkes at abforce gjorde en utmerket jobb når de fleste nøyde seg med å snakke, men arbeidet hans er langt fra den fulle Xposed-opplevelsen, og ingen utviklere eller blogger påstår noe annet (og definitivt ikke abforce; igjen, vi har ingenting annet enn respekt overfor alle de faktiske utviklerne som legger virkelig arbeid og innsats i dette). Faktisk, som vi skal komme inn på om litt, er noe av samfunnets respons (det være seg brukere eller "utviklere") den eneste sure delen i denne utviklingskjeden.


La oss skjære gjennom jakten og komme rett til poenget: ethvert fellesskap har dårlige elementer og aspekter. Med et like stort fellesskap som Android-entusiaster, kan de dårlige elementene virke som en stor del når de bare er en liten del (store, men fortsatt små i relative termer). Uten sukkerbelegg har imidlertid mye av samfunnets respons på utviklingen av Xposed for Nougat vært ekstremt barnslig, hensynsløs eller uansvarlig.

Det første store problemet har vært den nedlatende holdningen mange har vist om "døden til Xposed" fordi det tar for lang tid å bli utgitt for Nougat. Dette til tross for rovo89 oppdateringerogforsikringer, og til tross for at stort sett det nøyaktige scenariet skjedde med Lollipop da den første versjonen av ART ble introdusert. Det er greit å slutte å bruke Xposed, men det er ikke for å fornærme noens evner eller angripe andre for å ha en annen filosofi eller ikke sikre at dine blinkende behov blir dekket umiddelbart. Dette er enda mer sant for et helt gratis prosjekt, der utvikleren har uttrykt sin utviklingsmetodikk og årsakene bak den.

Et annet problem med samfunnets respons har vært å misforstå arten av abforces arbeid, med mange som hyller det som den nye Xposed eller annonserer det som en port for Nougat. Et stort problem med dette har vært at "utviklere" skynder seg å tilby flashbare versjoner uten å forstå (eller bry seg om) ulempene, siden ingen ansvarsfraskrivelser var tilbys i det hele tatt i noen tråder, med noen som til og med går så langt som å kreditere abforce og ikke rovo89 (som står bak det store flertallet av arbeidet med Xposed) og andre bidragsytere.

Som et siste poeng føler vi at vi bør ta opp rovo89s utviklingsfilosofi igjen. Med mange vokale brukere som hevder at det vil være fordelaktig å ha de siste endringene med åpen kildekode. Selv om dette høres bra ut i teorien, er det detikke like lett i praksis spesielt hvis vi vurderer rovo89s forklaring:

[...] Jeg tror at bare å presse ut den nåværende tilstanden ikke ville hjelpe prosjektet. Vi vil kanskje se "noen" utgivelse veldig raskt av folk som kompilerer koden, ser at det ser ut til å være det fungerer fint og publiser det som "deres port", til tross for problemene og tingene de ikke ville være klar over av. Så kall meg egoistisk, men jeg vil ikke se en så halvferdig utgivelse.[Kilde]

Noe som faktisk har vist seg å være en ganske god prediksjon av dagens situasjon, med flere «utviklere» som søker abforces endringer og tilbyr en flashbar ZIP med minimale eller ingen advarsler, ufullstendige kreditter, alt mens du ber om donasjoner.


Vi håper disse forklaringene ryddet opp i noen av tvilene dine og løste mulige misoppfatninger du kan ha hatt. Xposed har vært et fantastisk prosjekt som har nådd en stor del av vårt entusiast- og flashaholic-samfunn, og Xposed for Nougat burde være nok en gigantisk milepæl full av muligheter. Med moduler som GravityBox som allerede tilbyr Nougat-støtte, vil rovo89s ferdige prosjekt gå tilbake til en rekke alternativer.


Er du spent på Xposed på Nougat ROM? Gi oss beskjed i kommentarene!