Laten we zonder meer aan de slag gaan ..!
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.
STAP – 3: Projectconfiguratie
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:
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:
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.
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.
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.
Dat is alles !! Ik weet dat rebooten stom is! maar goed, je hebt je eigen Xposed-module gemaakt, is dat niet geweldig ?? !!