Ontwikkel je eerste XPOSED-MODULE

Laten we zonder meer aan de slag gaan ..!

Afbeelding 2. Aan de slag – codering

STAP – 1: Open Android Studio

Als als je het niet hebt, kun je het hier downloaden: link.

STAP – 2: Activiteit selecteren

Maak een nieuw Android Studio-project. (Zie onderstaande afbeelding)
Ik houd deze tutorial eenvoudig, we hoeven geen activiteit te maken omdat we alleen de kleur van de statusbalkklok veranderen.
Selecteer Geen activiteit en ga naar Volgende.

Afbeelding: nieuw project – activiteitsselectie

STAP – 3: Projectconfiguratie

Afbeelding: project configureren

Specificeer de naam en pakketnaam voor uw applicatie. Houd de taal als Java, als je bekend bent met Kotlin, ga daar dan mee akkoord – er zal niet zoveel harde codering zijn, want dit is een soort ‘hallo-wereld’-app / module-ontwikkeling.
Ik behoud de minimale API niveau naar 15.
Druk vervolgens op de knop Voltooien.

STAP – 4: Wijzig uw build.gradle (app) & Voeg onderstaande afhankelijkheden toe:

Synchroniseer vervolgens het project.

STAP – 5: Wijzig uw manifest.xml-bestand:

Voeg onderstaande metagegevenstags toe in de applicatietag:

De naam moet xposedmodule zijn en de waarde true. Laat de bron leeg. Herhaal vervolgens hetzelfde voor xposedminversion (de API-versie van de vorige stap) en xposeddescription (een zeer korte beschrijving van uw module).

STAP – 6: Creëer een klasse:

package com.myfirstxposedmodule;
public class MyModule {
}

Dit is onze klasse die we in de toekomst zullen aanpassen.

STAP – 7: xposed_init-bestand maken en wijzigen:

Afbeelding: projectweergave

Verander de directoryweergave naar de projectweergave. Navigeer naar app > src > main. Klik met de rechtermuisknop op main en selecteer een nieuwe > directory.
Noem deze: assets

Klik met de rechtermuisknop selecteer in de recentelijk gemaakte assets directory een nieuw > bestand.
Noem het: xposed_init (selecteer text als het om bestandstype vraagt).

Binnen xposed_init bestand, voeg volledige naam toe van onze java-klasse. d.w.z. in ons geval zal het zijn als:

com.myfirstxposedmodule.MyModule

Dit is hoe het Xposed framework onze module zal identificeren en zal laden in de boot. Dit bestand zal het framework vertellen welke klassen moeten worden geladen, wat we ook in de logboeken zullen zien.

STAP – 8: Modify MyModule class:

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 {
}
}

Implementeer IXposedHookLoadPackage en implementeer de methode handleLoadPackage zoals hierboven weergegeven.

Laten we nu eens proberen door een logfunctie in die handleLoadPackage methode te plaatsen:

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

Dit zal de geladen modules afdrukken. Over het algemeen worden deze logboeken in dit bestand gelogd: /data/data/de.robv.android.exposed.installer/log/debug.log (die gemakkelijk toegankelijk is via de Xposed Installer).

STAP – 9: Voer de code uit:

Afbeelding: fout bij het uitvoeren van ‘app’

Als u rechtstreeks probeert voer dit uit vanuit de Android-studio, je krijgt deze foutmelding. Dat is oké, want we hebben momenteel geen activiteit.

Hoe dan ook, maak je geen zorgen, ik heb een oplossing. Bewerk gewoon de configuratie Uitvoeren en verander de opstartoptie van Standaardactiviteit in Niets en selecteer Ok.

Afbeelding: Run wijzigen Configuraties

Probeer nu opnieuw uit te voeren (Windows: Shift + F10).

Als het programma met succes op uw apparaat is uitgevoerd, ‘ Ik kan deze module zien in de lijst met modules van de Xposed Installer-app. Zoals weergegeven in de onderstaande afbeelding, kunt u ook de beschrijvingstekst zien die we in het manifestbestand hadden ingevoerd.

Afbeelding: Xposed Module List

Activeer gewoon die module door het vakje aan te vinken en start je apparaat opnieuw op.Open na het opnieuw opstarten de Xposed Installer-applicatie en open de logboeken (je kunt ook het logbestand openen dat ik hierboven noemde, het is het pad). U ziet regels als deze:

Nu u weet hoe u de Xposed-module moet maken en uitvoeren, kunnen we dieper gaan om de code van de statusbalk te bekijken en enkele van onze eigen implementaties toe te passen.

STAP – 10: graven in de statusbalkcode:

Nu zijn we geïnteresseerd in het ophalen van de klok (tekst) van de statusbalk (die zich bevindt in com.android.systemui pakket). Zoals u weet, is Android een open-source-besturingsbron, zodat u de binnenkant van de code kunt zien. U kunt de broncode van Android downloaden via DEZE link. Afhankelijk van je Android-versie en je rom, kunnen er enkele wijzigingen zijn. Vanaf nu zijn we alleen geïnteresseerd in het vinden van de code van onze klok. Er is een Clock.java klasse binnen ergens in het com.android.systemui pakket en deze klasse breidt TextView uit, wat betekent dat je dit op dezelfde manier kunt behandelen als een TextView. DIT is de link naar die klas. Er is een methode die de tijd op de statusbalk bijwerkt met de naam updateClock(). Kijk naar het onderstaande fragment:

Wat willen we nu? We willen onze code uitvoeren wanneer deze methode wordt uitgevoerd. Wat we zullen doen in de volgende stap, die ook bekend staat als een methode hooken.

STAP – 11: de methode hooken:

De XposedHelper is een klasse die enkele hulpmethoden biedt. Een hulpmethode die we nodig hebben is findAndHookMethod die de volledige klassennaam in String, class loader (we kunnen het krijgen van XC_LoadPackage.LoadPackageParam van handleLoadPackage), de naam van de methode die we willen bijhouden (updateClock in ons geval) in String en XC_MethodHook call-back (wat gewoon een callback is). Hieronder staat onze code

In de bovenstaande code kun je zien dat er twee methoden zijn die ik heb geïmplementeerd in de anonieme klasse XC_MethodHook die beforeHookedMethod en afterHookedMethod. Zoals de naam suggereert, zal de eerste worden uitgevoerd vóór de hooked-methode en de laatste zal worden uitgevoerd na de hooked-methode (updateClock in ons geval). De parameters voor argumenten en return-types worden afgehandeld door MethodHookParam argument. Maar vanaf nu willen we alleen de kleur van de klok van de statusbalk wijzigen, we hebben gewoon afterHookedMethod nodig.

We hebben toegang nodig tot die TextView object, dat we kunnen ophalen van param.thisObject – dit is hetzelfde als this trefwoord in Clock.java klasse. Daarna kunnen we het casten naar TextView en dan kunnen we eenvoudig de kleur van dat TextView object wijzigen en ook de tekst wijzigen zoals ik deed :

STAP – 12: Start de module:

Voer de code uit en start uw apparaat opnieuw op. U kunt uw klok in het rood zien en die emoji-tekst die we hebben toegevoegd.

Afbeelding: gewijzigde kleur van de klok in de statusbalk

Dat is alles !! Ik weet dat rebooten stom is! maar goed, je hebt je eigen Xposed-module gemaakt, is dat niet geweldig ?? !!

Leave a Reply

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *