Grundlagen zum Xposed Framework

Kiwi++Soft

Kiwi++Soft

Ehrenmitglied
32.707
In diesem Beitrag möchte ich die Grundlagen zum Xposed Framework vorstellen:

Was ist da Xposed-Framework:

Um diese Frage zu beantworten, möchte ich eine Beschreibung des Android-Betriebssystems vorweg schicken. Die Basis des Android-Betriebssystems ist eigentlich ein Linux Betriebssystem. Dieses ist nicht Java-Basiert, sondern beruht auf nativem Code, in der Hauptsache in C/C++ geschrieben. Um die typischen Android-Apps auszuführen, die im wesentlichen Java-basiert sind, wird ein in nativem Code geschriebener Prozess namens AppProcess gestartet. Dieser enthält die Laufzeit-Umgebung für genau eine Java-App.

Das Xposed-Framework ist eine Erweiterung genau dieses Prozesses, der im Gegensatz zu dem Standard AppProcess drei Seiteneingänge für Code enthält, der nicht zu der App gehört, für die der Prozess eigentlich gestartet wurde. Durch diese Seiteneingänge kann nun fremder Code Einfluss auf den Code der App nehmen. Code-Fragmente, die diesen Eingang nehmen können, nennt man Xposed Module.

Das Xposed-Framework selbst verändert gar nichts an dem existierenden System, außer dass diese Seiteneingänge bereit stellt, und Xposed-Modulen die Möglichkeit gibt, sich zu registrieren zu lassen, und dann die Seiteneingänge zu benutzen.

Um ein Modul zu registrieren, ist ein Handlung des Users notwendig, ein Modul kann sich nicht selbst registrieren. Dies macht der Users selbst, mit dem Xposed-Installer.

Was kann das Xposed-Framework?

Das ist am leichtesten zu erklären, in dem man die drei Seiten-Eingänge genauer beschreibt.

Der Eingang 'Init Zygote':

Dieser Eingang wird als erstes aufgerufen. Er ist nicht spezifisch für eine App, sondern Eingriffe, die hier gemacht werden, finden für alle Apps statt. Hier kann man das Android-Framework manipulieren. Beispielsweise kann hier das framework-res.apk (in dem die globalen Ressourcen sind), manipuliert werden. Man kann Werte wie Texte (die entweder als Text ausgegeben werden, oder auf andere Werte verweisen), Zahlen-Werte (wie beispielsweise die Höhe der Status-Zeile), oder auch Icons und Hintergrund-Bilder überschreiben.

Der Eingang 'Package Loaded':


Dieser Eingang wird aufgerufen, wenn eine App selbst geladen wird. Ein Modul das diesen Eingang nutzt, hat hier die Möglichkeit, auf den Code der App Einfluss zu nehmen. Man kann sich für bestimmte Code-Stücke, Methode (oder Construtor) genannt, zu registrieren. Das Modul muss dabei genau spezifizieren, welche Bezeichnung das Code-Stück hat.

Dann wird das Modul vom Xposed-Framework jedes mal genau dann aufgerufen, wenn das spezifizierte Code-Stück von der App aufgerufen wird, und wenn der Aufruf beendet ist. Vor dem Aufruf bekommt das Modul die Daten übergeben, die später dem Code-Stück übergeben werden, mit der Möglichkeit, diese Daten zu manipulieren. Hier kann das Modul auch entscheiden, dass das Codestück gar nicht aufgerufen wird. Dann muss das Modul jedoch die Daten zurück geben, die im Normalfall von dem unterdrückten Code-Stück zurückgegeben werden.

Wurde das Code-Stück dann wirklich aufgerufen (und nicht der Aufruf abgebrochen), wird das Modul nochmals aufgerufen, und bekommt die vom Code-Stück erzeugten Daten wieder, mit der Möglichkeit die Daten zu verändern bevor sie an die App zurück gegeben werden.

In diesen oben beschrieben Einsprungpunkten besteht auch die Möglichkeit, globale Daten der App zu verändern.


Der Eingang 'Package Resource loaded':

Dieser Eingang wird aufgerufen, wenn eine App selbst geladen wird. Ein Modul hat die Möglichkeit die Ressourcen der App in dem Rahmen zu verändern, wie das für die Android-Framework Ressourcen im Eingang 'initZygote' beschrieben ist.


Schwachpunkte des Xposed-Frameworks:

Ein Xposed-Modul wird auf einem bestimmten Gerät entwickelt, hier gibt es eine bestimmte Version von Android. Zunächst wird das Modul für diese Version angepasst. Natürlich kann man ein Modul auch so schreiben, dass es mehrere Versionen von Android erkennt. Jedoch haben die Hersteller die Angewohnheit, ihre Android-Version ein wenig mit einem herstellerabhängigen Touch zu versehen. Dies kann dazu führen, dass ein Modul auf einem anderen Gerät (möglicherweise der gleichen Android-Version) auf einen Teil von Android zugreifen will, der aber vom Hersteller des anderen Gerätes abgeändert wurde. Das kann zu großen Inkompatibilitäten führen, und das Modul funktioniert nicht, oder erzeugt im schlimmsten Falle sogar einen Bootloop.


Wie installiert man das Xposed-Framework:

Das Xposed-Framework bekommt man von dieser Seite: [OFFICIAL] Xposed for Lollipop/Marshmallow [Android 5.0/5.1/6.0, v80, 2016/02/02]

Hier empfehle ich strengstens nur die Installations-Variante mit Custom-Recovery zu wählen. Denn wenn man ein Custom-Recovery installiert hat, kann man folgenden Punkt tun:


Wichtig: Vor der Installation von Xposed ein Backup des Systems mit dem Custom-Recovery erstellen!

Es kann sein, dass das Gerät nicht mit dem Xposed-Framework kompatibel ist, und nach der Installation des Xposed-Frameworks nicht startet, sondern in einem Bootloop landet. Dann kann man das vorher gezogene Backup einspielen, und das Gerät startet wieder.

Wenn man Backup gezogen hat, ist es empfehlenswert, erst noch einmal in Android zu booten, um dort da auf.o.a.Seite angebotene Xposed-Installer_xxx.apk zu installieren und die App zu starten. Das erzeugt erst einmal die Verzeichnis-Struktur der Xposed-Installer-App, in der das Xposed-Framework selbst später nach Konfigurations-Dateien suchen wird.

Nun kann man wieder in das Custom-Recovery booten, und damit die (vorher runter geladene) xposed-vXX-sdkYY-ZZZZ.zip Datei installieren.

Beim herunterladen der Zip-Datei folgendes beachten:
  • Bei vXX sollte XX die neueste Version bezeichnen.
  • Bei sdkYY sollte YY die passende Android sdk Version bezeichnen. 21 -> Android 5.0, 22 -> Android 5.1, 23 -> Android 6.0.
  • Bei ZZZZ sollte die dem Gerät entsprechende Prozessor-Architektur stehen: arm, arm64 oder x86.
 
Zuletzt bearbeitet von einem Moderator:
  • Danke
Reaktionen: guckyck, Opa Atze, S13gfried und 4 andere
@Kiwi++Soft

Sehr ausführliches Manual ! Hat mir zumindest geholfen ein wenig hinter die Kulisssen zu blicken.
Vielen Dank für Deine Mühe :)
Was ich noch nicht ganz verstanden habe ist, dass ich erst die aktuelle apk installieren soll (was ich bereits gemacht hatte) und dann noch mal die zip über den Recovery.
Mein Problem hatte ich bereits geschildert, leider bevor ich Deine Doku gelesen habe .. naja ... ist ja nicht zu spät.

[Update][Offiziell] Xposed-Framework für Android 5.0/5.1/6.0

Demnach sollte ich nach Deiner Beschreibung "doppelt" installieren ? (apk und zip).

Danke und Gruß

Opa Atze
 
Danke an meinen Kollegen @cptechnik , der als Lektor mein Tutoruial überarbeit hat:thumbup:.
 

Ähnliche Themen

Exarkuns
Antworten
1
Aufrufe
756
Exarkuns
Exarkuns
R
Antworten
3
Aufrufe
1.085
The Dark Knight
The Dark Knight
der von da
  • der von da
Antworten
3
Aufrufe
1.185
Möhre
M
Zurück
Oben Unten