Flashable Zip bringt inoffizielles Xposed Framework für Android 7.1 Nougat

Nach monatelangem Warten haben wir endlich Xposed Framework-Unterstützung für Nougat-ROMs (wenn auch inoffiziell). Dank einiger talentierter Entwickler in unseren eigenen Foren können Sie das Xposed Framework jetzt auf einem Android-Nougat-ROM über eine flashbare Zip-Datei installieren.

Bis jetzt sah die Zukunft von Xposed on Nougat etwas wackelig aus. Rovo89 - der Entwickler des Xposed Frameworks - hat vor etwas mehr als einer Woche ein Update zur Unterstützung von Android Nougat zur Verfügung gestellt. Rovo89 gab im Wesentlichen an, dass noch viel zu tun sei, um Xposed in Bezug auf Nougat zum Laufen zu bringen, und dass wir nur geduldig sein müssten.

Gott sei Dank, es sieht so aus, als hätten wir eine vorübergehende Lösung für diejenigen von uns, die ängstlich auf eine Notlösung gewartet haben. Das PurifyOS-Team griff nach dem ART-Modul, an dem Entwickler abforce gearbeitet hatte (und das heute bereits veröffentlicht wurde), und passte es an, dass es über eine flashbare Zip-Datei auf anderen benutzerdefinierten ROMs installiert werden kann (anstatt beim Kompilieren des ROMs implementiert zu werden). .

Derzeit sind drei Versionen für verschiedene Plattformen verfügbar, darunter Xposed SDK25 ARM64, Xposed SDK25 ARM und Xposed SDK25 x 86 . Das PurifyOS-Team hat diese neue Version von Xposed mit einem OnePlus 3T getestet, auf dem OxygenOS auf Basis von Android 7.1 ausgeführt wird. Sie sollte jedoch auch auf anderen Handys mit Android Nougat funktionieren. Benutzer berichten bereits, dass sie sie erfolgreich auf verschiedenen ROMs installieren konnten und Geräte. Zum Beispiel haben einige Benutzer des OnePlus 5 gemeldet, dass es funktioniert (keine Überraschung, da es auf dem OnePlus 3T einwandfrei läuft), aber ein Benutzer, der ein AOSP-basiertes ROM für das Samsung Galaxy S6 ausführt, hat ebenfalls gemeldet, dass es funktioniert Sie.

Es wird Macken geben, die man herausfinden muss, und nicht jeder hat es bisher geschafft, es zum Laufen zu bringen, wobei einige Benutzer unter Zwangsschließungen und anderen Kuriositäten leiden. Auch in diesem Fall können Sie es versuchen, wenn Sie auf die Ankunft von Xposed on Nougat gewartet haben, seit die vorherige Version des Android-Betriebssystems veröffentlicht wurde. Es wird berichtet, dass nicht alle vorhandenen Xposed Framework-Module von Anfang an funktionieren, aber einige sehr beliebte Module wie Amplify funktionieren.

Stellen Sie sicher, dass Sie regelmäßig Backups erstellen und den Thread sorgfältig lesen, bevor Sie sich an die Arbeit machen, wenn Sie sich nicht sicher sind, ob Ihr Gerät oder ROM unterstützt wird. Stellen Sie schließlich sicher, dass Sie die Suchfunktion verwenden, bevor Sie eine doppelte Frage hinterlassen. Android O ist vielleicht gleich um die Ecke, aber wie das Sprichwort sagt: "Besser spät als nie". Außerdem werden viele Benutzer Android O für einige Zeit nicht auf ihren Geräten sehen, daher sollte Xposed a sein Eine schöne Belohnung, damit Sie sich nicht zurückgelassen fühlen.


Update: Antwort von Rovo89

Das Original, das hinter dem Xposed Framework entwickelt wurde, Senior Recognized Developer rovo89, hat auf Github mit seinen Gedanken zu diesen jüngsten Entwicklungen geantwortet.

Aus meiner Erfahrung kann ich Ihnen sagen, dass es in der Tat nicht so schwer ist, die Grundlagen zu erlernen, aber es braucht verdammt viel Zeit für die Details. Es ist wie die 80-20-Regel, nur dass es eher 95-5 oder so ist.

Der Hooking-Ansatz, den ich für die vorherigen Releases entworfen habe, ist ziemlich stabil und kann auch für neuere Releases angewendet werden. Ich IsProxyMethod() davon aus, dass Sie die meiste Zeit gebraucht haben, um alle Stellen zu überprüfen, an denen IsProxyMethod() und IsDirect() aufgerufen werden, und um zu entscheiden, ob der neue Methodenmodifikator berücksichtigt werden soll oder nicht (dh ob Sie den Parameter true oder nicht). Wenn Sie das nicht getan haben, haben Sie möglicherweise einige Stellen verpasst, an denen solche Anrufe neu eingeführt wurden. Dasselbe gilt für Methoden wie InstallStubsForMethod(), die auf die ursprüngliche ursprüngliche Methode angewendet werden müssen, auch wenn sie für eine verknüpfte Methode aufgerufen werden. Sie müssten nach weiteren Stellen suchen, an denen dies relevant sein könnte. Das ist noch in der Größenordnung von Tagen, aber wenn Sie es versäumen, sehen Sie möglicherweise obskure Abstürze oder Fehlverhalten, die sehr schwer zu debuggen sind.

Außerdem haben Sie einen Ansatz gewählt, bei dem Hooks nur für ROMs funktionieren, die vollständig neu kompiliert wurden. Auf Standard-ROMs und sogar auf den meisten benutzerdefinierten ROMs (die Ihren Port beim Erstellen nicht enthielten) sowie auf Apps, die das Gerät möglicherweise zuvor kompiliert hat. Sie müssten also erneut mit einem gelöschten Gerät beginnen, auf dem ein spezielles ROM ausgeführt wird. Wenn nicht, können Optimierungen (z. B. Inlining) verhindern, dass eine Methode aufgerufen wird, und daher funktionieren Hooks nicht. Das Schlimmste daran ist, dass das genaue Verhalten vom ROM abhängt oder sogar davon, wie der Benutzer das Gerät verwendet (jetzt, da Apps auf der Grundlage von Profilen kompiliert werden). Module würden zufällig ausfallen und die Modulentwickler würden sich fragen, was sie falsch gemacht haben (Antwort: nichts). Wenn nicht alle Voraussetzungen erfüllt sind, handelt es sich um eine ziemlich unzuverlässige API. Stellen Sie sich vor, Google hat ein Update veröffentlicht, bei dem der OnClickListener einer Schaltfläche manchmal nicht aufgerufen wurde, es sei denn, Sie haben Ihr ROM von Grund auf neu kompiliert. Für mich persönlich ist dies eine große Einschränkung.

Er fährt fort:

Es macht überhaupt keinen Sinn, damit flashbare ZIPs zu veröffentlichen, da der Port nur dazu gedacht ist, ein ROM von Grund auf neu zu kompilieren .

Und wie ich befürchtet habe, gibt es keine einzige Warnung, dass dies ein unvollständiger Port ist, der den API-Vertrag häufig nicht erfüllt . ???? Das ist schlecht für Entwickler und Benutzer. Sie sollten zumindest wissen, dass es unvollständig ist, damit sie entscheiden können, ob sie es unterstützen / verwenden möchten. Ich würde es niemals wagen, so etwas ohne eine große dicke Warnung zu tun. Eigentlich würde ich, da ich eher Perfektionist bin, keine unvollständige Version veröffentlichen, Zuverlässigkeit ist für mich sehr wichtig.

Ich habe gerade mein Git-Log durchgesehen und hatte im Oktober das grundlegende Hooking (wie in diesem Port) fertig. Seitdem habe ich daran gearbeitet, die Einschränkungen zu beseitigen. Um es auf vorkompilierten ROMs zuverlässiger zu machen, hätte ich auch den Neukompilierungsteil portieren können, aber das ist immer noch nicht ideal. Wie weiter oben erläutert, haben wir jetzt JIT, mit dem wir alle Optimierungen beibehalten und nur die Methoden ungültig machen (und möglicherweise neu kompilieren), die direkt vom Hooking betroffen sind. Dies ist eine ziemliche Herausforderung, da es mehr als nur Kopieren und Einfügen ist. Und bis dies nicht getan ist, werde ich nichts veröffentlichen. 9 Monate dafür (bis jetzt) ​​sind wirklich eine lange Zeit, ich weiß, aber hey, es ist meine Freizeit und zB weil ich in eine neue Wohnung gezogen bin, konnte ich für einige Monate (!) Überhaupt nicht an Xposed arbeiten. und hatte sonst nur sehr begrenzte zeit.

Wir sollten klarstellen, dass diese jüngsten Entwicklungen nicht das wahre „Xposed“ sind, das Sie alle kennen und lieben, aber funktional können Sie jetzt einige Xposed Framework-Module auf Android Nougat verwenden. Wir werden Ihnen nichts vorwerfen, wenn Sie nicht auf die offizielle, stabilere und kompatibelere Version des Xposed Framework für Android Nougat warten, aber wir möchten klarstellen, dass diese Iteration nur eine Notlösung ist, um die Bedürfnisse einiger zu befriedigen Benutzer jetzt. Es ist wahrscheinlich, dass Xposed in Zukunft nicht mehr so ​​gehandhabt wird.


Laden Sie das inoffizielle Xposed Framework für Nougat in den Foren herunter