Aloitetaan ilman jatkojalostusta ..!
VAIHE – 1: Avaa Android Studio
Jos sinulla ei ole sitä, voit ladata sen täältä: link.
VAIHE – 2: Toiminnan valinta
Luo uusi Android Studio -projekti. (Katso alla oleva kuva)
Pidän tätä opetusohjelmaa yksinkertaisena, meidän ei tarvitse luoda mitään toimintaa, koska muutamme vain tilarivin kellon väriä.
Valitse Ei toimintaa ja siirry seuraavaan.
VAIHE – 3: Projektin määritykset
Määritä sovelluksellesi nimi ja paketin nimi. Pidä kieli Java-kielellä, jos tunnet Kotlinin, siirry siihen – kovaa koodausta ei tule niin paljon, koska tämä on eräänlainen ”hello-world” -sovelluksen / moduulin kehitys.
Pidän vähimmäissovellusliittymää taso 15: een. Napsauta sitten Valmis-painiketta.
VAIHE – 4: Muokkaa build.gradle-sovellustasi (sovellus) & Lisää alla olevat riippuvuudet:
Synkronoi sitten projekti.
VAIHE – 5: Muokkaa manifest.xml-tiedostoa:
Lisää alla olevat metatietotagit sovellustagiin:
Nimen tulee olla xposedmodule
ja arvon true
. Jätä resurssi tyhjäksi. Toista sitten sama xposedminversion
(edellisen vaiheen sovellusliittymäversio) ja xposeddescription
(moduulin hyvin lyhyt kuvaus).
VAIHE – 6: Luo luokka:
package com.myfirstxposedmodule;
public class MyModule {
}
Tämä on luokkamme, jota muokkaamme tulevaisuudessa.
VAIHE – 7: Luo ja muokkaa xposed_init-tiedostoa:
Vaihda hakemistonäkymä projekti-näkymään. Siirry sovelluksen > src > pääsivulle. Napsauta hiiren kakkospainikkeella päävalikkoa ja valitse uusi > -hakemisto.
Nimeä se: assets
Napsauta hiiren kakkospainikkeella äskettäin luotussa hakemistossa assets
valitse uusi > -tiedosto.
Nimeä se: xposed_init
(valitse text
, jos se pyytää tiedostotyyppiä).
Lisää xposed_init
-tiedoston sisälle koko nimi java-luokastamme. ts. meidän tapauksessamme se on kuin:
com.myfirstxposedmodule.MyModule
Näin Xposed-kehys tunnistaa moduulimme ja lataa sen käynnistykseen. Tämä tiedosto kertoo kehykselle ladattavat luokat, jotka myös näemme lokeista.
VAIHE – 8: Muokkaa MyModule-luokkaa:
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 {
}
}
Toteuta IXposedHookLoadPackage
ja toteuta menetelmä handleLoadPackage
kuten yllä on esitetty.
Kokeillaan nyt asettamalla lokifunktio tämän handleLoadPackage
-menetelmän sisään:
XposedBridge.log("Loaded app: " + lpparam.packageName);
Tämä tulostaa ladatut moduulit. Yleensä nämä lokit kirjataan tämän tiedoston sisään: /data/data/de.robv.android.exposed.installer/log/debug.log
(johon pääsee helposti Xposed Installer -sovelluksen kautta).
VAIHE – 9: Suorita koodi:
Jos yrität suoraan Suorita tämä Android-studiosta, saat tämän virheen. Mikä on ok, koska meillä ei ole tällä hetkellä mitään toimintaa.
Älä huoli, minulla on ratkaisu. Muokkaa vain Suorita kokoonpanoa ja muuta käynnistysvaihtoehto oletustoiminnosta Ei mitään ja valitse OK.
Yritä nyt suorittaa uudelleen (Windows: Shift + F10).
Kun laite on suoritettu onnistuneesti, Näen tämän moduulin Xposed Installer -sovelluksen moduuliluettelossa. Kuten alla olevassa kuvassa näkyy, näet myös selostustekstin kirjoittamamme kuvaustekstin.
Aktivoi vain moduuli valitsemalla ruutu ja käynnistä laite uudelleen.Käynnistä uudelleenkäynnistyksen jälkeen Xposed Installer -sovellus ja avaa lokit (voit myös avata edellä mainitun lokitiedoston polun). Näet tällaisia rivejä:
Nyt kun tiedät kuinka luoda ja käyttää Xposed-moduulia, voimme mennä syvemmälle tarkastelemaan tilarivin koodia ja soveltamaan joitain omia toteutuksia.
VAIHE – 10: Kaivaminen tilarivin koodiin:
Nyt olemme kiinnostuneita saamaan kellon (tekstin) tilariviltä (joka sijaitsee com.android.systemui
-paketti). Kuten tiedät, Android on avoimen lähdekoodin toimintalähde, jotta voit nähdä koodin sisäosat. Voit ladata Android-lähdekoodin TÄSTÄ linkistä. Android-versiostasi ja romististasi riippuen muutoksia saattaa olla. Tällä hetkellä olemme kiinnostuneita vain löytämään kellokoodimme. Jossakin paketissa com.android.systemui
on Clock.java
-luokka, ja tämä luokka laajentaa TextView
että voit kohdella tätä samanlaisena kuin TextView. TÄMÄ on linkki kyseiseen luokkaan. On yksi menetelmä, joka päivittää ajan tilarivillä, jonka nimi on updateClock()
. Katso alla oleva katkelma:
Mitä haluamme? Haluamme käyttää koodia aina, kun tämä menetelmä suoritetaan. Sen teemme seuraavassa vaiheessa, joka tunnetaan myös menetelmän kiinnittämisenä.
VAIHE – 11: Menetelmän kytkeminen:
XposedHelper
on luokka, joka tarjoaa joitain auttajamenetelmiä. Yksi tarvitsemamme apumenetelmä on findAndHookMethod
, joka ottaa koko luokan nimen luokkakuormaajaan String
(voimme saada sen osoitteesta XC_LoadPackage.LoadPackageParam
kohteesta handleLoadPackage
), menetelmän nimi, jota haluamme seurata (tapauksessamme updateClock
) String
– ja XC_MethodHook
-puheluissa (mikä on yksinkertaisesti takaisinsoitto). Alla on koodimme
Yllä olevasta koodista näet, että nimettömässä luokassa XC_MethodHook
olen toteuttanut kaksi menetelmää, jotka ovat beforeHookedMethod
ja afterHookedMethod
. Kuten nimestä voi päätellä, ensimmäinen suoritetaan ennen koukutettua menetelmää ja jälkimmäinen suoritetaan koukutetun menetelmän jälkeen (tapauksessamme updateClock
). Argumenttien ja palautustyyppien parametrit hoidetaan argumentilla MethodHookParam
. Mutta nyt haluamme vain muuttaa tilarivin kellon väriä, tarvitsemme yksinkertaisesti afterHookedMethod
.
Tarvitsemme pääsyn tähän TextView
-objekti, jonka voimme saada osoitteesta param.thisObject
– tämä on sama kuin this
avainsana Clock.java
-luokka. Sitten voimme heittää sen tiedostoon TextView
ja sitten yksinkertaisesti muuttaa kyseisen TextView
-objektin väriä ja myös muokata tekstiä kuten minä :
VAIHE – 12: Suorita moduuli:
Suorita koodi ja käynnistä laite uudelleen. Näet kellosi punaisena ja lisäämämme emoji-tekstin.
Siinä se! Tiedän, että uudelleenkäynnistys on perseestä! mutta hei, olet luonut oman Xposed-moduulin, eikö olekin hienoa ??!