Développez votre premier MODULE XPOSÉ

Sans plus tarder, commençons ..!

Image 2. Commençons – codage

É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.

Image: Nouveau projet – Sélection d’activités

ÉTAPE – 3: Configuration du projet

Image: Configurer le 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:

Image: Vue du projet

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:

Image: Erreur lors de l’exécution de ‘app’

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.

Image: Change Run Configurations

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.

Image: Liste des modules Xposed

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é.

Image: Changement de couleur de l’horloge dans la barre d’état

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 ?? !!

Leave a Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *