Dezvoltați primul MODUL XPOSED

Fără alte întrebări, să începem ..!

Imaginea 2. Să începem – codificare

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.

Imagine: Proiect nou – Selectarea activității

PASUL – 3: Configurarea proiectului

Imagine: Configurare proiect

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:

Imagine: Vizualizare proiect

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:

Imagine: Eroare la executarea „app”

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.

Imagine: Modificare Executare Configurări

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.

Imagine: Xposed Module List

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.

Imagine: culoare modificată de ceasul din bara de stare

Gata !! Știu că repornirea e de rahat! dar hei, ți-ai creat propriul modul Xposed, nu-i așa grozav ?? !!

Leave a Reply

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *