Minden további nélkül kezdjük! ..
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.
3. LÉPÉS: Projektkonfiguráció
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:
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:
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.
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.
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.
Ennyi !! Tudom, hogy az újraindítás szar! de hé, létrehozta saját Xposed modulját, nem olyan nagyszerű ?? !!