Sviluppa il tuo primo MODULO XPOSED

Senza ulteriori indugi, iniziamo ..!

Immagine 2. Iniziamo: codifica

PASSAGGIO – 1: Apri Android Studio

Se non ce l’hai, puoi scaricarlo da qui: link.

PASSAGGIO – 2: selezione attività

Crea un nuovo progetto Android Studio. (Vedi immagine sotto)
Sto mantenendo questo tutorial semplice, non abbiamo bisogno di creare alcuna attività poiché stiamo solo cambiando il colore dell’orologio della barra di stato.
Seleziona Nessuna attività e vai a Avanti.

Immagine: Nuovo progetto – Selezione attività

PASSAGGIO – 3: configurazione del progetto

Immagine: Configura progetto

Specifica il nome e il nome del pacchetto per la tua applicazione. Mantieni il linguaggio come Java, se hai familiarità con Kotlin, fallo – non ci sarà molto hard coding in quanto si tratta di una sorta di sviluppo di app / moduli “ciao mondo”.
Sto mantenendo l’API minima livello a 15.
Quindi premi il pulsante Fine.

PASSAGGIO – 4: Modifica il tuo build.gradle (app) & Aggiungi le seguenti dipendenze:

Quindi, sincronizza il progetto.

PASSAGGIO – 5: Modifica il tuo file manifest.xml:

Aggiungi sotto i tag meta-dati all’interno del tag dell’applicazione:

Il nome deve essere xposedmodule e il valore true. Lascia la risorsa vuota. Quindi ripeti lo stesso per xposedminversion (la versione API del passaggio precedente) e xposeddescription (una descrizione molto breve del tuo modulo).

PASSAGGIO – 6: Crea una classe:

package com.myfirstxposedmodule;
public class MyModule {
}

Questa è la nostra classe che modificheremo in futuro.

PASSAGGIO – 7: Crea e modifica il file xposed_init:

Immagine: Vista progetto

Cambia la vista della directory nella vista del progetto. Vai all’app > src > main. Fai clic con il pulsante destro del mouse su principale e seleziona la nuova directory >.
Assegnala un nome: assets

Fai clic con il pulsante destro del mouse nella directory assets creata di recente, seleziona il nuovo file >.
Nominale: xposed_init (seleziona text se richiede il tipo di file).

All’interno del xposed_init file, aggiungi il nome completo della nostra classe Java. cioè nel nostro caso, sarà come:

com.myfirstxposedmodule.MyModule

Questo è il modo in cui il framework Xposed identificherà il nostro modulo e lo caricherà all’avvio. Questo file indicherà al framework quali classi caricare, che vedremo anche nei log.

PASSO – 8: Modifica 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 {
}
}

Implementa IXposedHookLoadPackage e implementa il metodo handleLoadPackage come mostrato sopra.

Ora proviamo inserendo una funzione di log all’interno di quel handleLoadPackage metodo:

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

Questo stamperà i moduli caricati. In genere, questi log vengono registrati all’interno di questo file: /data/data/de.robv.android.exposed.installer/log/debug.log (che è facilmente accessibile tramite Xposed Installer).

PASSAGGIO – 9: Esegui il codice:

Immagine: errore durante l’esecuzione di “app”

Se provi direttamente a eseguilo da Android Studio, riceverai questo errore. Il che va bene perché al momento non abbiamo attività.

Comunque, non preoccuparti, sto avendo una soluzione. Modifica la configurazione di Esegui e cambia l’opzione di avvio da Attività predefinita a Nessuno e seleziona OK.

Immagine: Modifica esecuzione Configurazioni

Ora, prova di nuovo a eseguire (Windows: Maiusc + F10).

In caso di esecuzione corretta sul tuo dispositivo, tu ‘ sarò in grado di vedere questo modulo nell’elenco dei moduli dell’app Xposed Installer. Come mostrato nell’immagine sottostante, puoi anche vedere il testo della descrizione che abbiamo inserito nel file manifest.

Immagine: Elenco moduli Xposed

Attiva semplicemente quel modulo selezionando la casella e riavvia il dispositivo.Dopo il riavvio, apri l’applicazione Xposed Installer e apri i log (puoi anche aprire il file di log che ho menzionato sopra è il percorso). Vedrai righe come questa:

Ora che sai come creare ed eseguire il modulo Xposed, possiamo andare più in profondità per esaminare il codice della barra di stato e applicare alcune delle nostre implementazioni.

PASSAGGIO – 10: Scavare nel codice della barra di stato:

Ora, ci interessa ottenere l’orologio (testo) dalla barra di stato (che risiede in com.android.systemui pacchetto). Come sai, Android è una sorgente operativa open source, quindi puoi vedere il contenuto del codice. Puoi scaricare il codice sorgente di Android da QUESTO link. A seconda della versione di Android e della rom, potrebbero esserci dei cambiamenti. Al momento, ci interessa solo trovare il codice del nostro orologio. C’è una classe Clock.java da qualche parte all’interno del com.android.systemui pacchetto e questa classe estende TextView che significa che puoi trattare questo simile come un TextView. QUESTO è il collegamento a quella classe. C’è un metodo che aggiorna l’ora sulla barra di stato il cui nome è updateClock(). Guarda il frammento di seguito:

Ora, cosa vogliamo? Vogliamo eseguire il nostro codice ogni volta che questo metodo viene eseguito. Cosa che faremo nel passaggio successivo, noto anche come hooking a method.

STEP – 11: Hooking the method:

Il XposedHelper è una classe che fornisce alcuni metodi di supporto. Un metodo di supporto di cui avremo bisogno è findAndHookMethod che prende il nome completo della classe in String, programma di caricamento classi (possiamo ottenerlo da XC_LoadPackage.LoadPackageParam da handleLoadPackage), il nome del metodo che vogliamo monitorare (updateClock nel nostro caso) in String e XC_MethodHook call-back (che è semplicemente un callback). Di seguito sarà il nostro codice

Nel codice sopra, puoi vedere che ci sono due metodi che ho implementato nella classe anonima XC_MethodHook che sono beforeHookedMethod e afterHookedMethod. Come suggerisce il nome, il primo verrà eseguito prima del metodo hooked e il secondo verrà eseguito dopo il metodo hooked (updateClock nel nostro caso). I parametri per argomenti e tipi restituiti sono gestiti dall’argomento MethodHookParam. Ma per ora, vogliamo solo cambiare il colore dell’orologio della barra di stato, avremo semplicemente bisogno di afterHookedMethod.

Avremo bisogno di accedere a quel TextView, che possiamo ottenere da param.thisObject: sarà lo stesso della parola chiave this in Clock.java classe. Quindi possiamo trasmetterlo a TextView e poi possiamo semplicemente cambiare il colore di quell’oggetto TextView e possiamo anche modificare il testo come ho fatto io :

PASSAGGIO – 12: Esegui il modulo:

Esegui il codice e riavvia nuovamente il dispositivo. Potrai vedere il tuo orologio in rosso e il testo emoji che abbiamo aggiunto.

Immagine: colore cambiato di l’orologio nella barra di stato

Questo è tutto !! So che il riavvio fa schifo! ma hey, hai creato il tuo modulo Xposed, non è fantastico ?? !!

Leave a Reply

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *