Opracuj swój pierwszy MODUŁ XPOSED

Bez zbędnych ceregieli, zacznijmy ..!

Obraz 2. Zaczynajmy – kodowanie

KROK – 1: Otwórz Android Studio

Jeśli nie masz go, możesz go pobrać stąd: link.

KROK – 2: Wybór zajęć

Utwórz nowy projekt Android Studio. (Zobacz zdjęcie poniżej)
Utrzymuję ten samouczek w prostocie, nie musimy tworzyć żadnej aktywności, ponieważ zmieniamy tylko kolor zegara paska stanu.
Wybierz opcję Brak aktywności i przejdź do Dalej.

Obraz: Nowy projekt – Wybór działania

KROK – 3: Konfiguracja projektu

Obraz: Konfiguruj projekt

Określ nazwę i nazwę pakietu dla swojej aplikacji. Zachowaj język jako Javę, jeśli znasz Kotlin, idź z tym – nie będzie zbyt twardego kodowania, ponieważ jest to rodzaj programowania aplikacji / modułu „hello-world”.
Utrzymuję minimalne API poziom do 15.
Następnie naciśnij przycisk Zakończ.

KROK – 4: Zmodyfikuj build.gradle (aplikację) & Dodaj poniższe zależności:

Następnie zsynchronizuj projekt.

KROK – 5: Zmodyfikuj swój plik manifest.xml:

Dodaj poniżej tagi metadanych wewnątrz tagu aplikacji:

Powinna mieć nazwę xposedmodule, a wartość true. Pozostaw zasób pusty. Następnie powtórz to samo dla xposedminversion (wersja API z poprzedniego kroku) i xposeddescription (bardzo krótki opis Twojego modułu).

KROK – 6: Utwórz klasę:

package com.myfirstxposedmodule;
public class MyModule {
}

To jest nasza klasa, którą zmodyfikujemy w przyszłości.

KROK – 7: Utwórz i zmodyfikuj plik xposed_init:

Obraz: widok projektu

Zmień widok katalogu na widok projektu. Przejdź do aplikacji > src > main. Kliknij prawym przyciskiem myszy główny i wybierz nowy katalog >.
Nazwij go: assets

Kliknij prawym przyciskiem myszy w niedawno utworzonym katalogu assets wybierz nowy plik >.
Nazwij go: xposed_init (wybierz text, jeśli zapyta o typ pliku).

Wewnątrz xposed_init pliku, dodaj pełną nazwę naszej klasy java. czyli w naszym przypadku będzie to wyglądać następująco:

com.myfirstxposedmodule.MyModule

W ten sposób framework Xposed zidentyfikuje nasz moduł i załaduje go podczas startu. Ten plik powie frameworkowi, które klasy załadować, co również zobaczymy w dziennikach.

KROK – 8: Zmodyfikuj klasę 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 {
}
}

Zaimplementuj IXposedHookLoadPackage i zaimplementuj metodę handleLoadPackage, jak pokazano powyżej.

Teraz wypróbujmy umieszczając funkcję dziennika wewnątrz metody handleLoadPackage:

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

Spowoduje to wydrukowanie załadowanych modułów. Ogólnie te dzienniki są rejestrowane w tym pliku: /data/data/de.robv.android.exposed.installer/log/debug.log (który jest łatwo dostępny za pośrednictwem Xposed Installer).

KROK – 9: Uruchom kod:

Obraz: Błąd podczas uruchamiania „aplikacji”

Jeśli spróbujesz bezpośrednio uruchom to ze studia Android, otrzymasz ten błąd. Co jest w porządku, ponieważ w tej chwili nie prowadzimy żadnej aktywności.

W każdym razie nie martw się, mam rozwiązanie. Po prostu edytuj konfigurację Uruchom i zmień opcję Uruchom z Default Activity na Nothing i wybierz OK.

Obraz: Zmień przebieg Konfiguracje

Teraz ponownie spróbuj uruchomić (Windows: Shift + F10).

Po pomyślnym uruchomieniu na urządzeniu, Będę mógł zobaczyć ten moduł na liście modułów aplikacji Xposed Installer. Jak pokazano na poniższym obrazku, możesz również zobaczyć tekst opisu, który wprowadziliśmy w pliku manifestu.

Obraz: Lista modułów Xposed

Po prostu aktywuj ten moduł, zaznaczając pole i zrestartuj urządzenie.Po ponownym uruchomieniu otwórz aplikację Xposed Installer i otwórz logi (możesz też otworzyć plik dziennika, o którym wspomniałem powyżej, jest to ścieżka). Zobaczysz takie linie:

Teraz, gdy wiesz, jak utworzyć i uruchomić moduł Xposed, możemy przejść dalej, aby przyjrzeć się kodowi paska stanu i zastosować niektóre z naszych własnych implementacji.

KROK – 10: Przeglądanie kodu paska stanu:

Teraz interesuje nas pobranie zegara (tekstu) z paska stanu (znajdującego się w com.android.systemui pakiet). Jak wiesz, Android jest operacyjnym źródłem typu open source, dzięki czemu możesz zobaczyć zawartość kodu. Możesz pobrać kod źródłowy Androida z TEGO linku. W zależności od wersji Androida i pamięci ROM mogą wystąpić pewne zmiany. Na razie interesuje nas tylko znalezienie kodu naszego zegara. Gdzieś w pakiecie com.android.systemui znajduje się klasa Clock.java, która jest rozszerzeniem TextView, co oznacza że możesz traktować to podobnie jak TextView. TO jest link do tej klasy. Jest jedna metoda, która aktualizuje czas na pasku stanu, a jej nazwa to updateClock(). Spójrz na poniższy fragment:

Czego teraz chcemy? Chcemy uruchamiać nasz kod za każdym razem, gdy ta metoda zostanie wykonana. Co zrobimy w następnym kroku, znanym również jako przechwytywanie metody.

KROK – 11: Podpięcie metody:

XposedHelper to klasa udostępniająca kilka metod pomocniczych. Jedną z metod pomocniczych, których będziemy potrzebować, jest findAndHookMethod, która przyjmuje pełną nazwę klasy w String, moduł ładujący klasy (możemy go pobrać z XC_LoadPackage.LoadPackageParam from handleLoadPackage), nazwa metody, którą chcemy śledzić (w naszym przypadku updateClock) w String i XC_MethodHook oddzwonieniu (które jest po prostu oddzwonieniem). Poniżej znajduje się nasz kod

W powyższym kodzie widać dwie metody, które zaimplementowałem w klasie anonimowej XC_MethodHook, które są beforeHookedMethod i afterHookedMethod. Jak sama nazwa wskazuje, pierwsza zostanie wykonana przed przechwyconą metodą, a druga – po przechwyconej metodzie (w naszym przypadku updateClock). Parametry argumentów i typów zwracanych są obsługiwane przez argument MethodHookParam. Ale na razie chcemy tylko zmienić kolor zegara paska stanu, będziemy po prostu potrzebować afterHookedMethod.

Będziemy potrzebować dostępu do tego TextView, który możemy uzyskać z param.thisObject – będzie to to samo, co this słowo kluczowe w Clock.java class. Następnie możemy rzucić go na TextView i po prostu zmienić kolor tego TextView obiektu, a także zmodyfikować tekst tak jak ja :

KROK – 12: Uruchom moduł:

Uruchom kod i ponownie uruchom ponownie urządzenie. Będziesz mógł zobaczyć swój zegar na czerwono i dołączony przez nas tekst emoji.

Obraz: Zmieniono kolor zegar na pasku stanu

To wszystko !! Wiem, że ponowne uruchamianie jest do bani! ale hej, stworzyłeś swój własny moduł Xposed, czyż to nie wspaniałe ?? !!

Leave a Reply

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *