Készítse el első XPOSED MODULJÁT

Minden további nélkül kezdjük! ..

2. kép. Kezdjük – kódolás

1. LÉPÉS: Nyissa meg az Android Studio

Ha nincs meg, innen letöltheti: link.

2. LÉPÉS: Tevékenység kiválasztása

Hozzon létre egy új Android Studio projektet. (Lásd az alábbi képet)
Ezt az oktatóanyagot egyszerűnek tartom, nincs szükségünk semmilyen tevékenységre, mivel csak az állapotsor órájának színét változtatjuk meg.
Válassza a Nincs tevékenység lehetőséget, és lépjen a Tovább gombra.

Kép: Új projekt – Tevékenység kiválasztása

3. LÉPÉS: Projektkonfiguráció

Kép: Projekt beállítása

Adja meg az alkalmazás nevét és csomagnevét. Tartsa a nyelvet Java-ként, ha ismeri a Kotlint, akkor menjen ezzel – nem lesz akkora kemény kódolás, mivel ez egyfajta „hello-world” alkalmazás / modul fejlesztés.
A minimális API-t betartom szint 15-re.
Ezután nyomja meg a Befejezés gombot.

4. LÉPÉS: Módosítsa a build.gradle (alkalmazást) & Adja meg az alábbi függőségeket:

Ezután szinkronizálja a projektet.

5. LÉPÉS: Módosítsa a manifest.xml fájlt:

Az alábbi metaadatcímkék hozzáadása az alkalmazáscímkéhez:

A névnek xposedmodule és true értéknek kell lennie. Hagyja üresen az erőforrást. Ezután ismételje meg ugyanezt a következővel: xposedminversion (az előző lépés API-verziója) és xposeddescription (a modul nagyon rövid leírása).

6. LÉPÉS: Osztály létrehozása:

package com.myfirstxposedmodule;
public class MyModule {
}

Ez az osztályunk, amelyet a jövőben módosítani fogunk.

7. LÉPÉS: xposed_init fájl létrehozása és módosítása:

Kép: Projektnézet

A könyvtár nézetet módosítsa Projekt nézetre. Keresse meg a (z) > src > alkalmazást. Kattintson a jobb gombbal a főmenüre, és válassza ki az új > könyvtárat.
Nevezze el: assets

Kattintson jobb gombbal a nemrégiben létrehozott assets könyvtárban válassza ki az új > fájlt.
Nevezze el: xposed_init (válassza a text lehetőséget, ha fájltípust kér).

A xposed_init fájlon belül adja hozzá a teljes nevet java osztályunk. azaz esetünkben a következő lesz:

com.myfirstxposedmodule.MyModule

Így fogja az Xposed keretrendszer azonosítani a modulunkat és betölteni a rendszerindításra. Ez a fájl megmondja a keretrendszernek, hogy mely osztályokat töltse be, és ezeket a naplókban is láthatjuk.

– 8. LÉPÉS: A MyModule osztály módosítása:

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 {
}
}

A IXposedHookLoadPackage megvalósítása és a handleLoadPackage módszer megvalósítása a fentiek szerint.

Most próbáljuk ki naplófüggvény elhelyezésével a handleLoadPackage módszer belsejébe:

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

Ez kinyomtatja a betöltött modulokat. Általában ezeket a naplókat a fájl belsejében naplózza: /data/data/de.robv.android.exposed.installer/log/debug.log (amely könnyen elérhető az Xposed Installer segítségével).

– 9. LÉPÉS: Futtassa a kódot:

Kép: Hiba az alkalmazás futtatásakor

Ha közvetlenül megpróbálja futtassa ezt az android stúdióból, megkapja ezt a hibát. Ez rendben van, mert jelenleg semmilyen tevékenységet nem folytatunk.

Egyébként ne aggódjon, van megoldásom. Csak módosítsa a Futtatás konfigurációját, és módosítsa az Indítási opciót Alapértelmezett tevékenységről semmire, és válassza az OK lehetőséget.

Kép: Futtatás módosítása Konfigurációk

Most próbálkozzon újra a futtatással (Windows: Shift + F10).

Az eszköz sikeres futtatásakor Láthatom ezt a modult az Xposed Installer alkalmazás modullistáján. Amint az az alábbi képen látható, láthatja azt a leírást is, amelyet a jegyzékfájlba beírtunk.

Kép: Xposed modullista

Csak aktiválja ezt a modult a négyzet bejelölésével, és indítsa újra eszközét.Újraindítás után nyissa meg az Xposed Installer alkalmazást, és nyissa meg a naplókat (megnyithatja azt a naplófájlt is, amelynek elérési útját fentebb említettem). Ilyen sorokat fog látni:

Most, hogy tudod, hogyan kell létrehozni és futtatni az Xposed modult, elmehetünk mélyebbre, és megnézhetjük az állapotsor kódját, és alkalmazhatunk néhány saját megvalósítást.

– 10. LÉPÉS: Beletúrás az állapotsor kódjába:

Most arra vagyunk kíváncsiak, hogy az állapotjelző sáv (az com.android.systemui csomag). Mint tudják, az Android egy nyílt forráskódú operációs forrás, így láthatja a kód belsejét. Ebből a linkből töltheti le az android forráskódját. Az androidos verziótól és a romtól függően változások lehetnek. Mostantól csak az óránkód megtalálása érdekel minket. Van egy Clock.java osztály valahol a com.android.systemui csomagban, és ez az osztály kiterjeszti a TextView hogy ezt hasonlóan kezelheted, mint egy TextView-t. EZ a link ehhez az osztályhoz. Van egy módszer, amely frissíti az időt az állapotsoron, amelynek neve updateClock(). Nézze meg az alábbi részletet:

Most mit akarunk? Futtatni szeretnénk a kódunkat, amikor ez a módszer végrehajtásra kerül. Amit a következő lépésben fogunk megtenni, ami más néven egy módszer összekapcsolása.

– 11. LÉPÉS: A módszer összekapcsolása:

A egy olyan osztály, amely néhány segítő módszert kínál. Az egyik segítő módszer, amire szükségünk lesz, a findAndHookMethod, amely a teljes osztálynevet az String osztályrészletöltőben veszi fel (a XC_LoadPackage.LoadPackageParam from handleLoadPackage), a követni kívánt metódus neve (esetünkben updateClock) String és XC_MethodHook visszahívásban (ami egyszerűen visszahívás). Az alábbiakban a kódunk lesz

A fenti kódban láthatja, hogy két módszert alkalmaztam a névtelen XC_MethodHook osztályban, amelyek beforeHookedMethod és afterHookedMethod. Ahogy a neve is sugallja, először az egyiket a kampós metódus előtt, az utóbbit pedig a kapcsolt metódus után hajtják végre (esetünkben updateClock). Az argumentumok és a return-típusok paramétereit az MethodHookParam argumentum kezeli. De mostanra csak meg akarjuk változtatni az állapotsor órájának színét, egyszerűen szükségünk lesz a afterHookedMethod -re.

Hozzáférésre lesz szükségünk ehhez a TextView objektum, amelyet a param.thisObject fájlból nyerhetünk – ez megegyezik a this kulcsszóval a Clock.java osztály. Ezután átküldhetjük a TextView fájlba, majd egyszerűen megváltoztathatjuk az TextView objektum színét, és módosíthatjuk a szöveget, ahogy én is tettem :

12. LÉPÉS: Futtassa a modult:

Futtassa a kódot, és indítsa újra az eszközt. Láthatja az óráját piros színnel, és azt az emoji szöveget, amelyet mellékeltünk.

Kép: A az óra az állapotsorban

Ennyi !! Tudom, hogy az újraindítás szar! de hé, létrehozta saját Xposed modulját, nem olyan nagyszerű ?? !!

Leave a Reply

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük