Sans plus tarder, commençons ..!
ÉTAPE – 1: Ouvrez Android Studio
Si vous ne l’avez pas, vous pouvez le télécharger à partir d’ici: lien.
ÉTAPE – 2: Sélection d’activité
Créez un nouveau projet Android Studio. (Voir l’image ci-dessous)
Je garde ce tutoriel simple, nous n’avons pas besoin de créer d’activité car nous changeons simplement la couleur de l’horloge de la barre d’état.
Sélectionnez Aucune activité et passez à Suivant.
ÉTAPE – 3: Configuration du projet
Spécifiez le nom et le nom du package de votre application. Gardez le langage Java, si vous êtes familier avec Kotlin, allez-y – il n’y aura pas beaucoup de codage en dur car il s’agit d’une sorte de développement d’applications / de modules « hello-world ».
Je garde l’API minimale niveau à 15.
Cliquez ensuite sur le bouton Terminer.
ÉTAPE – 4: Modifiez votre build.gradle (app) & Ajoutez ci-dessous les dépendances:
Ensuite, synchronisez le projet.
ÉTAPE – 5: Modifiez votre fichier manifest.xml:
Ajoutez ci-dessous les balises de méta-données à l’intérieur de la balise d’application:
Le nom doit être xposedmodule
et la valeur true
. Laissez la ressource vide. Répétez ensuite la même chose pour xposedminversion
(la version API de l’étape précédente) et xposeddescription
(une très courte description de votre module).
ÉTAPE – 6: Créer une classe:
package com.myfirstxposedmodule;
public class MyModule {
}
C’est notre classe que nous modifierons à l’avenir.
ÉTAPE – 7: Créer et modifier le fichier xposed_init:
Changez la vue du répertoire en vue du projet. Accédez à l’application > src > main. Faites un clic droit sur le répertoire principal et sélectionnez le nouveau répertoire >.
Nommez-le: assets
Cliquez avec le bouton droit dans le répertoire assets
récemment créé, sélectionnez le nouveau fichier >.
Nommez-le: xposed_init
(sélectionnez text
s’il demande le type de fichier).
Dans le fichier xposed_init
, ajoutez le nom complet de notre classe java. c’est-à-dire que dans notre cas, ce sera comme:
com.myfirstxposedmodule.MyModule
C’est ainsi que le framework Xposed identifiera notre module et le chargera au démarrage. Ce fichier indiquera au framework quelles classes charger, ce que nous verrons également dans les journaux.
ÉTAPE – 8: Modifiez la classe MyModule:
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 {
}
}
Implémentez IXposedHookLoadPackage
et implémentez la méthode handleLoadPackage
comme indiqué ci-dessus.
Maintenant, essayons en mettant une fonction de journalisation à l’intérieur de cette handleLoadPackage
méthode:
XposedBridge.log("Loaded app: " + lpparam.packageName);
Cela affichera les modules chargés. Généralement, ces journaux sont enregistrés dans ce fichier: /data/data/de.robv.android.exposed.installer/log/debug.log
(qui est facilement accessible via le programme d’installation Xposed).
ÉTAPE – 9: Exécutez le code:
Si vous essayez directement exécutez ceci à partir du studio Android, vous obtiendrez cette erreur. Ce n’est pas grave car nous n’avons aucune activité pour le moment.
Quoi qu’il en soit, ne vous inquiétez pas, j’ai une solution. Modifiez simplement la configuration Exécuter et remplacez l’option de lancement de l’activité par défaut par Rien et sélectionnez Ok.
Maintenant, essayez à nouveau d’exécuter (Windows: Shift + F10).
Une fois l’exécution réussie sur votre appareil, vous ‘ Je pourrai voir ce module dans la liste des modules de l’application Xposed Installer. Comme le montre l’image ci-dessous, vous pouvez également voir le texte de description que nous avons entré dans le fichier manifeste.
Activez simplement ce module en cochant la case et redémarrez votre appareil.Après le redémarrage, ouvrez l’application Xposed Installer et ouvrez les journaux (vous pouvez également ouvrir le fichier journal que j’ai mentionné ci-dessus, c’est le chemin). Vous verrez des lignes comme celle-ci:
Maintenant que vous savez comment créer et exécuter le module Xposed, nous pouvons aller plus loin pour examiner le code de la barre d’état et appliquer certaines de nos propres implémentations.
ÉTAPE – 10: Creuser dans le code de la barre d’état:
Maintenant, nous sommes intéressés à obtenir l’horloge (texte) de la barre d’état (qui réside dans com.android.systemui
). Comme vous le savez, Android est une source d’exploitation open source, de sorte que vous pouvez voir les éléments internes du code. Vous pouvez télécharger le code source d’Android à partir de CE lien. Selon votre version d’Android et votre rom, il peut y avoir des changements. Pour le moment, nous sommes uniquement intéressés par le code de notre horloge. Il y a une classe Clock.java
quelque part dans le package com.android.systemui
et cette classe s’étend TextView
ce qui signifie que vous pouvez traiter cela comme un TextView. CECI est le lien vers cette classe. Il existe une méthode qui met à jour l’heure sur la barre d’état dont le nom est updateClock()
. Regardez l’extrait ci-dessous:
Maintenant, que voulons-nous? Nous voulons exécuter notre code chaque fois que cette méthode est exécutée. Ce que nous ferons à l’étape suivante, également connue sous le nom d’accrochage d’une méthode.
ÉTAPE – 11: Accrochage de la méthode:
Le XposedHelper
est une classe qui fournit des méthodes d’assistance. Une méthode d’assistance dont nous aurons besoin est findAndHookMethod
qui prend le nom complet de la classe dans String
, chargeur de classe (nous pouvons l’obtenir à partir de XC_LoadPackage.LoadPackageParam
from handleLoadPackage
), le nom de la méthode que nous voulons suivre (updateClock
dans notre cas) dans String
et XC_MethodHook
call-back (qui est simplement un callback). Ci-dessous sera notre code
Dans le code ci-dessus, vous pouvez voir qu’il existe deux méthodes que j’ai implémentées dans la classe anonyme XC_MethodHook
qui sont beforeHookedMethod
et afterHookedMethod
. Comme son nom l’indique, la première sera exécutée avant la méthode hookée et la dernière sera exécutée après la méthode hookée (updateClock
dans notre cas). Les paramètres des arguments et des types de retour sont gérés par l’argument MethodHookParam
. Mais pour l’instant, nous voulons juste changer la couleur de l’horloge de la barre d’état, nous aurons simplement besoin de afterHookedMethod
.
Nous aurons besoin d’accéder à ce TextView
, que nous pouvons obtenir à partir de param.thisObject
– ce sera le même que le mot clé this
dans Clock.java
classe. Ensuite, nous pouvons le convertir en TextView
et nous pouvons simplement changer la couleur de cet objet TextView
et également modifier le texte comme je l’ai fait :
ÉTAPE – 12: Exécutez le module:
Exécutez le code et redémarrez à nouveau votre appareil. Vous pourrez voir votre horloge en rouge et le texte emoji que nous avons ajouté.
C’est tout !! Je sais que le redémarrage est nul! mais bon, vous avez créé votre propre module Xposed, n’est pas génial ?? !!