Fără alte întrebări, să începem ..!
PASUL – 1: Deschideți Android Studio
Dacă nu îl aveți, îl puteți descărca de aici: link.
PASUL 2: Selectarea activității
Creați un nou proiect Android Studio. (Vedeți imaginea de mai jos)
Mențin acest tutorial simplu, nu este nevoie să creăm nicio activitate deoarece schimbăm doar culoarea ceasului barei de stare.
Selectați Fără activitate și accesați Următorul.
PASUL – 3: Configurarea proiectului
Specificați numele și numele pachetului pentru aplicația dvs. Păstrați limbajul ca Java, dacă sunteți familiarizat cu Kotlin, mergeți cu asta – nu va exista o codificare atât de dificilă, deoarece acesta este un fel de dezvoltare de aplicații / module „hello-world”. nivel la 15.
Apoi apăsați butonul Finalizare.
PASUL 4: Modificați build.gradle (app) & Adăugați mai jos dependențe:
Apoi, sincronizați proiectul.
PASUL – 5: Modificați fișierul manifest.xml:
Adăugați mai jos etichete de meta-date în eticheta aplicației:
Numele trebuie să fie xposedmodule
și valoarea true
. Lăsați resursa goală. Apoi repetați același lucru pentru xposedminversion
(versiunea API de la pasul anterior) și xposeddescription
(o descriere foarte scurtă a modulului dvs.).
PASUL – 6: Creați o clasă:
package com.myfirstxposedmodule;
public class MyModule {
}
Aceasta este clasa noastră pe care o vom modifica în viitor.
STEP – 7: Creați și modificați fișierul xposed_init:
Schimbați vizualizarea directorului în vizualizarea Proiect. Navigați la aplicația > src > principal. Faceți clic dreapta pe main și selectați noul director >.
Denumiți-l: assets
Faceți clic dreapta în directorul assets
creat recent, selectați un nou fișier >.
Denumiți-l: xposed_init
(selectați text
dacă solicită tipul de fișier).
În interiorul fișierului xposed_init
, adăugați numele complet din clasa noastră java. adică în cazul nostru, va fi ca:
com.myfirstxposedmodule.MyModule
Acesta este modul în care cadrul Xposed va identifica modulul nostru și îl va încărca pe boot. Acest fișier va spune cadrului ce clase trebuie încărcate, pe care le vom vedea și în jurnale.
PASUL – 8: Modificați clasa 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ți IXposedHookLoadPackage
și implementați metoda handleLoadPackage
așa cum se arată mai sus.
Acum, să încercăm prin introducerea unei funcții jurnal în interiorul acelei metode handleLoadPackage
:
XposedBridge.log("Loaded app: " + lpparam.packageName);
Aceasta va imprima modulele încărcate. În general, aceste jurnale sunt înregistrate în interiorul acestui fișier: /data/data/de.robv.android.exposed.installer/log/debug.log
(care este ușor accesibil prin intermediul programului de instalare Xposed).
PASUL – 9: Rulați codul:
Dacă încercați direct să rulați acest lucru din studio Android, veți primi această eroare. Ceea ce este ok pentru că nu avem nicio activitate în acest moment.
Oricum, nu vă faceți griji, am o soluție. Trebuie doar să editați configurația Rulați și să schimbați opțiunea Lansare din Activitate implicită la Nimic și selectați Ok.
Acum, încercați din nou să rulați (Windows: Shift + F10).
Dacă rulați cu succes pe dispozitivul dvs., Voi putea vedea acest modul în lista modulului aplicației Xposed Installer. După cum se arată în imaginea de mai jos, puteți vedea și textul de descriere pe care l-am introdus în fișierul manifest.
Doar, activați acel modul bifând caseta și reporniți dispozitivul.După repornire, deschideți aplicația Xposed Installer și deschideți jurnalele (puteți deschide și fișierul jurnal pe care l-am menționat mai sus calea). Veți vedea linii de genul acesta:
Acum că știți cum să creați și să rulați modulul Xposed, putem merge mai adânc în jos pentru a privi codul barei de stare și a aplica unele dintre propriile noastre implementări.
PASUL – 10: Săpăm în codul barei de stare:
Acum, ne interesează să obținem ceasul (text) din bara de stare (care se află în com.android.systemui
pachet). După cum știți, Android este o sursă de operare open-source, astfel încât să puteți vedea elementele din interiorul codului. Puteți descărca codul sursă al androidului din ACEST link. În funcție de versiunea dvs. de Android și de rom-ul dvs., ar putea exista unele modificări. De acum, suntem interesați doar să găsim codul ceasului nostru. Există o clasă Clock.java
undeva în pachetul com.android.systemui
și această clasă extinde TextView
ceea ce înseamnă că puteți trata acest lucru similar cu un TextView. ASTA este legătura cu acea clasă. Există o metodă care actualizează ora pe bara de stare al cărei nume este updateClock()
. Uită-te la fragmentul de mai jos:
Acum, ce vrem? Vrem să rulăm codul nostru ori de câte ori această metodă este executată. Ceea ce vom face în pasul următor, care este, de asemenea, cunoscut sub numele de conectarea unei metode.
PASUL 11: Conectarea metodei:
XposedHelper
este o clasă care oferă câteva metode de ajutor. O metodă de ajutor de care vom avea nevoie este findAndHookMethod
care ia numele complet al clasei în String
, încărcător de clase (îl putem obține de la XC_LoadPackage.LoadPackageParam
din handleLoadPackage
), denumirea metodei pe care dorim să o urmărim (updateClock
în cazul nostru) în String
și XC_MethodHook
call-back (care este pur și simplu un callback). Mai jos va fi codul nostru
În codul de mai sus, puteți vedea că există două metode pe care le-am implementat în clasa anonimă XC_MethodHook
care sunt beforeHookedMethod
și afterHookedMethod
. După cum sugerează și numele, primul va fi executat înainte de metoda hooked, iar acesta din urmă va fi executat după metoda hooked (updateClock
în cazul nostru). Parametrii pentru argumente și tipurile de returnare sunt gestionați de argumentul MethodHookParam
. Dar, de acum, vrem doar să schimbăm culoarea ceasului barei de stare, vom avea nevoie pur și simplu de afterHookedMethod
.
Vom avea nevoie de acces la TextView
, pe care îl putem obține de la param.thisObject
– acesta va fi același cu this
cuvânt cheie din Clock.java
clasă. Apoi îl putem arunca la TextView
și apoi putem schimba pur și simplu culoarea acelui obiect TextView
și, de asemenea, putem modifica textul așa cum am făcut :
PASUL – 12: Rulați modulul:
Rulați codul și reporniți din nou dispozitivul. Veți putea vedea ceasul dvs. în roșu și textul emoji pe care l-am adăugat.
Gata !! Știu că repornirea e de rahat! dar hei, ți-ai creat propriul modul Xposed, nu-i așa grozav ?? !!