Utvikle din første XPOSED-MODUL

Uten videre, la oss komme i gang ..!

Bilde 2. La oss komme i gang – koding

TRINN – 1: Åpne Android Studio

Hvis du ikke har det, kan du laste det ned her: lenke.

TRINN – 2: Aktivitetsvalg

Opprett et nytt Android Studio-prosjekt. (Se bildet nedenfor)
Jeg holder denne opplæringen enkel, vi trenger ikke lage noen aktivitet siden vi bare endrer fargen på statuslinjens klokke.
Velg Ingen aktivitet og gå til Neste.

Bilde: Nytt prosjekt – Aktivitetsvalg

TRINN – 3: Prosjektkonfigurasjon

Bilde: Konfigurer prosjekt

Angi navnet og pakkenavnet for applikasjonen din. Hold språket som Java, hvis du er kjent med Kotlin, gå med det – det blir ikke så mye hard koding, da dette er en slags «hallo-world» app / modulutvikling.
Jeg holder minimums-API nivå til 15.
Trykk deretter på Fullfør-knappen.

TRINN – 4: Endre build.gradle (app) & Legg til nedenfor avhengigheter:

Synkroniser deretter prosjektet.

TRINN – 5: Endre manifest.xml-filen:

Legg til metadata-koder nedenfor i applikasjonskoden:

Navnet skal være xposedmodule og verdien true. La ressursen være tom. Gjenta deretter det samme for xposedminversion (API-versjonen fra forrige trinn) og xposeddescription (en veldig kort beskrivelse av modulen din).

TRINN – 6: Opprett en klasse:

package com.myfirstxposedmodule;
public class MyModule {
}

Dette er vår klasse som vi vil endre i fremtiden.

TRINN – 7: Opprett og modifiser xposed_init-fil:

Bilde: Prosjektvisning

Endre katalogvisningen til prosjektvisningen. Naviger til app > src > main. Høyreklikk på hovedmenyen og velg ny > -katalog.
Gi den navn: assets

Høyreklikk i den nylig opprettede assets -katalogen, velg ny > -fil.
Gi den navnet: xposed_init (velg text hvis den ber om filtype).

Inne i xposed_init -filen, legg til fullt navn av vår java-klasse. dvs. i vårt tilfelle vil det være som:

com.myfirstxposedmodule.MyModule

Dette er hvordan Xposed-rammeverket vil identifisere modulen vår og laste den på bagasjerommet. Denne filen vil fortelle rammeverket hvilke klasser som skal lastes inn, som vi også ser i loggene.

TRINN – 8: Endre MyModule-klassen:

package com.myfirstxposedmodule;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
import de.robv.android.xposed.XposedBridge;
public class MyModule implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
}
}

Implementer IXposedHookLoadPackage og implementer metoden handleLoadPackage som vist ovenfor.

Nå, la oss prøve ved å sette en loggfunksjon i den handleLoadPackage -metoden:

XposedBridge.log("Loaded app: " + lpparam.packageName);

Dette vil skrive ut de lastede modulene. Vanligvis logges disse loggene i denne filen: /data/data/de.robv.android.exposed.installer/log/debug.log (som er lett tilgjengelig via Xposed Installer).

TRINN – 9: Kjør koden:

Image: Error running ‘app’

Hvis du prøver direkte å kjør dette fra android studio, får du denne feilen. Noe som er ok fordi vi ikke har noen aktivitet akkurat nå.

Uansett, ikke bekymre deg, jeg har en løsning. Bare rediger Kjør konfigurasjon og endre Startalternativ fra Standardaktivitet til Ingenting, og velg Ok.

Image: Change Run Konfigurasjoner

Prøv igjen å kjøre (Windows: Shift + F10).

Ved vellykket kjøring på enheten din, Jeg kan se denne modulen i Xposed Installer-appens modulliste. Som vist i bildet nedenfor, kan du også se beskrivelsesteksten som vi hadde angitt i manifestfilen.

Bilde: Xposed-modulliste

Bare aktiver den modulen ved å merke av i boksen og starte enheten på nytt.Etter omstart, åpner du Xposed Installer-applikasjonen og åpner loggene (du kan også åpne loggfilen som jeg nevnte ovenfor banen). Du vil se linjer som dette:

Nå som du vet hvordan du oppretter og kjører Xposed-modulen, kan vi gå lenger ned for å se på statuslinjens kode og bruke noen av våre egne implementeringer.

TRINN – 10: Graver deg inn i statuslinjens kode:

Nå er vi interessert i å få klokken (tekst) fra statuslinjen (som ligger i com.android.systemui -pakke). Som du vet er Android en åpen kildekode, slik at du kan se innsiden av koden. Du kan laste ned kildekoden til android fra DENNE lenken. Avhengig av Android-versjonen din og rom-en din, kan det være noen endringer. Per nå er vi bare interessert i å finne klokkekoden vår. Det er en Clock.java klasse inne et sted i com.android.systemui pakke og denne klassen utvider TextView som betyr at du kan behandle dette lignende som en TextView. DETTE er lenken til den klassen. Det er en metode som oppdaterer tiden på statuslinjen hvis navn er updateClock(). Se på utdraget nedenfor:

Nå, hva vi vil ha? Vi vil kjøre koden vår når denne metoden blir utført. Hvilket vi vil gjøre i neste trinn, som også er kjent som å koble til en metode.

TRINN – 11: Hekting av metoden:

XposedHelper er en klasse som gir noen hjelpemetoder. En hjelpermetode som vi trenger er findAndHookMethod som tar hele klassenavnet i String, klasselaster (vi kan få det fra XC_LoadPackage.LoadPackageParam fra handleLoadPackage), metodens navn som vi ønsker å spore (updateClock i vårt tilfelle) i String og XC_MethodHook tilbakeringing (som ganske enkelt er en tilbakeringing). Nedenfor vil være koden vår

I koden ovenfor kan du se at det er to metoder som jeg har implementert i den anonyme klassen XC_MethodHook som er beforeHookedMethod og afterHookedMethod. Som navnet antyder, vil man først bli henrettet før den hektede metoden, og den sistnevnte vil bli henrettet etter den hektede metoden (updateClock i vårt tilfelle). Parameterne for argumenter og returtyper håndteres av MethodHookParam argument. Men per nå vil vi bare endre statuslinjens klokkefarge, vi trenger ganske enkelt afterHookedMethod.

Vi trenger tilgang til den TextView objekt, som vi kan få fra param.thisObject – dette blir det samme som this søkeord i Clock.java klasse. Så kan vi kaste den til TextView, og så kan vi ganske enkelt endre fargen på det TextView -objektet, og vi kan også endre teksten som jeg gjorde :

TRINN – 12: Kjør modulen:

Kjør koden og start enheten på nytt. Du vil kunne se klokken din i rødt og den emoji-teksten vi la til.

Bilde: Endret farge på klokken i statuslinjen

Det er det !! Jeg vet at omstart suger! men hei, du har laget din egen Xposed-modul, er det ikke bra ?? !!

Leave a Reply

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *