Vytvořte svůj první MODUL XPOSED

Bez dalších okolků, pojďme začít!!

Obrázek 2. Začněme – programování

KROK – 1: Otevřete Android Studio

Pokud nemáte jej, můžete si jej stáhnout zde: odkaz.

KROK – 2: Výběr aktivity

Vytvořte nový projekt Android Studio. (Viz obrázek níže)
Tento tutoriál udržuji jednoduchý, nemusíme vytvářet žádnou aktivitu, protože právě měníme barvu hodin stavového řádku.
Vyberte Žádná aktivita a přejděte na Další.

Obrázek: Nový projekt – výběr aktivity

KROK – 3: Konfigurace projektu

Obrázek: Konfigurace projektu

Zadejte název a název balíčku pro vaši aplikaci. Ponechte jazyk jako Javu, pokud jste obeznámeni s Kotlinem, jděte do toho – nebude tu tolik tvrdého kódování, protože se jedná o druh vývoje aplikace / modulu „hello-world“.
Dodržuji minimální API úroveň na 15.
Poté stiskněte tlačítko Dokončit.

KROK – 4: Upravte svůj build.gradle (aplikaci) & Přidat níže závislosti:

Potom synchronizujte projekt.

KROK – 5: Upravte soubor manifest.xml:

Přidejte níže tagy metadat uvnitř tagu aplikace:

Název by měl být xposedmodule a hodnota true. Zdroj nechte prázdný. Poté opakujte totéž pro xposedminversion (verze API z předchozího kroku) a xposeddescription (velmi krátký popis vašeho modulu).

KROK – 6: Vytvoření třídy:

package com.myfirstxposedmodule;
public class MyModule {
}

Toto je naše třída, kterou v budoucnu upravíme.

KROK – 7: Vytvoření a úprava souboru xposed_init:

Obrázek: Pohled na projekt

Změňte zobrazení adresáře na zobrazení Projekt. Přejděte do aplikace > src > main. Klikněte pravým tlačítkem na hlavní a vyberte nový > adresář.
Pojmenujte jej: assets

Klikněte pravým tlačítkem v nedávno vytvořeném assets adresáři vyberte nový > soubor.
Pojmenujte jej: xposed_init (vyberte text pokud to vyžaduje typ souboru).

Uvnitř souboru xposed_init přidejte celé jméno naší třídy Java. tj. v našem případě to bude vypadat takto:

com.myfirstxposedmodule.MyModule

Takto Xposed framework identifikuje náš modul a načte jej na boot. Tento soubor řekne rozhraní, které třídy se mají načíst, což také uvidíme v protokolech.

KROK – 8: Upravit třídu 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 {
}
}

Implementujte IXposedHookLoadPackage a implementujte metodu handleLoadPackage, jak je uvedeno výše.

Teď si to vyzkoušíme vložením funkce protokolu do této handleLoadPackage metody:

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

Tím se vytisknou načtené moduly. Obecně se tyto protokoly zaznamenávají do tohoto souboru: /data/data/de.robv.android.exposed.installer/log/debug.log (který je snadno přístupný pomocí instalačního programu Xposed).

KROK – 9: Spusťte kód:

Obrázek: Chyba při spuštění „aplikace“

Pokud se přímo pokusíte spusťte to ze studia Android, zobrazí se tato chyba. Což je v pořádku, protože právě teď neprovádíme žádnou aktivitu.

Každopádně se nebojte, mám řešení. Stačí upravit konfiguraci spuštění a změnit možnost spuštění z výchozí aktivity na nic a vybrat OK.

Obrázek: Změnit běh Konfigurace

Nyní se znovu pokuste spustit (Windows: Shift + F10).

Po úspěšném spuštění na vašem zařízení Tento modul uvidím v seznamu modulů aplikace Xposed Installer. Jak je znázorněno na následujícím obrázku, můžete také vidět text popisu, který jsme zadali do souboru manifestu.

Obrázek: Seznam modulů Xposed

Aktivujte tento modul zaškrtnutím políčka a restartujte zařízení.Po restartu otevřete aplikaci Xposed Installer a otevřete protokoly (můžete také otevřít soubor protokolu, který jsem výše zmínil o jeho cestě). Uvidíte řádky jako toto:

Nyní, když víte, jak vytvořit a spustit modul Xposed, můžeme jít hlouběji do hloubky, abychom se podívali na kód stavového řádku a použili některé z našich vlastních implementací.

KROK – 10: Kopání do kódu stavového řádku:

Nyní nás zajímá získání hodin (textu) ze stavového řádku (který sídlí v balíček). Jak víte, Android je operační zdroj s otevřeným zdrojovým kódem, takže můžete vidět vnitřní obsah kódu. Zdrojový kód systému Android si můžete stáhnout z TOTO odkazu. V závislosti na verzi systému Android a vašem rom mohou nastat některé změny. Od této chvíle nás zajímá pouze nalezení kódu našich hodin. Uvnitř balíčku com.android.systemui je někde Clock.java třída a tato třída rozšiřuje TextView což znamená že s tímto můžete zacházet podobně jako s TextView. TOTO je odkaz na tuto třídu. Existuje jedna metoda, která aktualizuje čas na stavovém řádku, jehož název je updateClock(). Podívejte se na níže uvedený úryvek:

Co teď chceme? Chceme spustit náš kód, kdykoli je tato metoda spuštěna. Což uděláme v dalším kroku, který se také nazývá hákování metody.

KROK – 11: Hákování metody:

The XposedHelper je třída, která poskytuje některé pomocné metody. Jednou z pomocných metod, kterou budeme potřebovat, je findAndHookMethod, která převezme celý název třídy v String zavaděči tříd (můžeme ho získat z XC_LoadPackage.LoadPackageParam z handleLoadPackage), název metody, kterou chceme sledovat (v našem případě updateClock) v String a XC_MethodHook zpětném volání (což je jednoduše zpětné volání). Níže bude náš kód

Ve výše uvedeném kódu můžete vidět, že existují dvě metody, které jsem implementoval v anonymní třídě XC_MethodHook, které jsou beforeHookedMethod a afterHookedMethod. Jak název napovídá, první bude spuštěn před zaháknutou metodou a druhý bude proveden po zaháknuté metodě (v našem případě updateClock). Parametry pro argumenty a návratové typy jsou zpracovány argumentem MethodHookParam. Ale teď už jen chceme změnit barvu hodin na stavovém řádku, jednoduše budeme potřebovat afterHookedMethod.

Budeme potřebovat přístup k tomu TextView objekt, který můžeme získat z param.thisObject – bude to stejné jako this klíčové slovo v Clock.java třída. Pak jej můžeme vrhnout na TextView a pak můžeme jednoduše změnit barvu tohoto TextView objektu a také upravit text jako já :

KROK – 12: Spusťte modul:

Spusťte kód a znovu restartujte zařízení. Uvidíte své hodiny červeně a ten text emodži, který jsme připojili.

Obrázek: Změněná barva hodiny ve stavovém řádku

To je vše !! Vím, že restart je na hovno! ale hej, vytvořili jste si vlastní Xposed modul, není to tak skvělé ?? !!

Leave a Reply

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *