Framework Xposed non officiel pour Android 7.1 Nougat

click fraud protection

Un zip flashable est maintenant disponible et apporte le Xposed Framework aux ROM Android 7.1 Nougat. Le zip fonctionne sur le OnePlus 3T ainsi que sur de nombreux autres téléphones !

Après des mois et des mois d'attente, nous avons enfin le support de Xposed Framework pour les ROM Nougat (bien que officieusement). Grâce à certains développeurs talentueux sur nos propres forums XDA, vous pouvez désormais installer Xposed Framework sur une ROM Android Nougat via un zip flashable.

Jusqu’à présent, l’avenir de Xposed sur Nougat semblait un peu fragile. Rovo89 - le développeur derrière Xposed Framework - a fourni une mise à jour sur la prise en charge d'Android Nougat il y a un peu plus d'une semaine. Rovo89 a essentiellement déclaré qu'il y avait encore beaucoup de travail à faire pour que Xposed fonctionne correctement sur Nougat, et qu'il faudrait simplement être patient.

Heureusement, il semble que nous ayons trouvé une solution temporaire pour ceux d’entre nous qui attendaient avec impatience une mesure provisoire. L'équipe PurifyOS a récupéré le module ART que le développeur

abforcer avait travaillé sur (et qui a été publié plus tôt dans la journée), et l'a adapté pour qu'il puisse être installé sur d'autres ROM personnalisées via un zip flashable (au lieu de devoir être implémenté lors de la compilation de la ROM).

Il existe actuellement trois versions disponibles pour différentes plates-formes, dont Xposed SDK25 ARM64, Xposed SDK25 BRASet Xposed SDK25 X86. L'équipe PurifyOS a testé cette nouvelle version de Xposed avec un OnePlus 3T exécutant OxygenOS basé sur Android 7.1, mais elle devrait fonctionner sur d'autres téléphones fonctionnant sous Android Nougat et les utilisateurs signalent déjà qu'ils ont réussi à l'installer sur différentes ROM et dispositifs. Par exemple, quelques utilisateurs du OnePlus 5 ont signalé qu'il fonctionnait (pas de surprise, étant donné qu'il fonctionne sur le OnePlus 5). 3T très bien), mais un utilisateur exécutant une ROM basée sur AOSP pour le Samsung Galaxy S6 a également signalé que cela fonctionnait pour lui.

Il y aura des bizarreries à résoudre et tout le monde n'a pas réussi à le faire fonctionner jusqu'à présent, certains utilisateurs étant confrontés à des fermetures forcées et à d'autres bizarreries. Cependant, même dans ce cas, vous pouvez toujours essayer si vous attendez l'arrivée de Xposed sur Nougat depuis la sortie de la version précédente du système d'exploitation Android. Tous les modules Xposed Framework existants ne fonctionneront pas dès le départ, mais certains modules très populaires tels que Amplify fonctionneraient.

Assurez-vous de faire des sauvegardes régulières et de lire attentivement le fil de discussion avant de vous y aventurer si vous ne savez pas si votre appareil ou votre ROM est pris en charge. Enfin, assurez-vous d'utiliser la fonction « recherche » avant de laisser une question en double. Android O est peut-être au coin de la rue, mais comme le dit le proverbe, "Mieux vaut tard que jamais." De plus, de nombreux utilisateurs ne verront pas Android O sur leurs appareils avant un certain temps, donc Xposed devrait être un régal pour que vous ne vous sentiez pas laissé pour compte.


Mise à jour: réponse de Rovo89

L'original développé derrière Xposed Framework, XDA Senior Recognized Developer rovo89, a répondu sur Github avec ses réflexions sur ces développements récents.

D'après mon expérience, je peux vous dire que ce n'est effectivement pas si difficile de réaliser les bases, mais cela prend énormément de temps pour les détails. C'est comme la règle des 80-20, sauf que c'est plutôt 95-5 environ.

L'approche d'accrochage que j'ai conçue pour les versions précédentes est plutôt stable et peut également être appliquée aux versions plus récentes. Je suppose que vous avez eu besoin la plupart du temps de vérifier tous les endroits où IsProxyMethod() et IsDirect() est appelé et décide s'ils doivent ou non prendre en compte le nouveau modificateur de méthode (c'est-à-dire utiliser le paramètre true ou non). Si vous ne l'avez pas fait, vous avez peut-être manqué certains endroits où de tels appels ont été récemment introduits. Idem pour les méthodes comme InstallStubsForMethod(), qui doit fonctionner sur la méthode d'origine même lorsqu'elle est appelée pour une méthode hookée. Vous devrez rechercher d'autres endroits où cela pourrait être pertinent. Cela reste encore quelques jours, mais si vous ne le faites pas, vous pourriez constater des plantages obscurs ou des comportements inappropriés très difficiles à déboguer.

En plus de cela, vous avez adopté une approche selon laquelle les hooks ne fonctionneraient correctement que pour les ROM entièrement compilées à partir de zéro. Sur les ROM d'origine et même sur la plupart des ROM personnalisées (qui n'incluaient pas votre port lors de la construction), ainsi que pour toutes les applications que l'appareil aurait pu compiler auparavant. Vous devrez donc tout recommencer avec un appareil effacé exécutant une ROM spéciale. Sinon, les optimisations (par exemple l'inlining) pourraient empêcher l'appel d'une méthode et les hooks ne fonctionneraient donc pas. Le pire, c'est que le comportement exact dépend de la ROM, ou même de la manière dont l'utilisateur utilise l'appareil (maintenant que les applications sont compilées sur la base de profils). Les modules échoueraient de manière aléatoire et les développeurs de modules se demanderaient ce qu'ils ont fait de mal (réponse: rien). Si toutes les conditions préalables ne sont pas remplies, c'est une API peu fiable. Imaginez que Google publie une mise à jour où le OnClickListener d'un bouton n'était parfois pas appelé, à moins que vous n'ayez compilé votre ROM à partir de zéro... Pour moi personnellement, c'est une grande limitation.

Il poursuit :

Cela n'a aucun sens de publier des ZIP flashables avec cela, car le port est uniquement destiné à recompiler une ROM à partir de zéro..

Et comme je le craignais, il n'y a pas un seul avertissement indiquant qu'il s'agit d'un port incomplet qui ne remplira souvent pas le contrat API. 😠 C'est mauvais pour les développeurs et les utilisateurs, ils devraient au moins savoir que c'est incomplet afin de pouvoir décider s'ils veulent le prendre en charge/l'utiliser. Je n’oserais jamais faire quelque chose comme ça sans un gros avertissement. En fait, comme je suis plutôt perfectionniste, je ne publierais pas du tout une version incomplète, la fiabilité est très importante pour moi.

Je viens de vérifier mon journal Git et j'avais le hooking de base (comme dans ce port) prêt en octobre. Depuis, j’ai travaillé sur la suppression des limitations. Pour le rendre plus fiable sur les ROM pré-compilées, j'aurais pu également porter la partie recompilation, mais ce n'est toujours pas idéal. Comme expliqué quelque part ci-dessus, nous avons maintenant JIT, ce qui nous permet de conserver toutes les optimisations, en invalidant uniquement (et éventuellement en recompilant) les méthodes directement affectées par le hooking. C'est assez difficile, car il s'agit de plus qu'un simple copier-coller. Et tant que cela ne sera pas fait, je ne publierai rien. 9 mois pour ça (jusqu'à maintenant), c'est vraiment long, je sais, mais bon, c'est mon temps libre et par ex. en raison du déménagement vers un nouvel appartement, je n'ai pas pu travailler sur Xposed pendant plusieurs mois (!) et je n'avais autrement que très peu de temps.

Nous devons préciser que ces développements récents ne sont pas le véritable "Xposed" que vous connaissez tous et j'adore, mais fonctionnellement, ils vous permettent d'utiliser certains modules Xposed Framework dès maintenant sur Android Nougat. Nous ne vous reprocherons pas de ne pas attendre la version officielle, plus stable et plus compatible de Xposed Framework pour Android Nougat, mais nous tenons à préciser que cette itération n'est qu'une mesure provisoire destinée à satisfaire les besoins de certains utilisateurs. maintenant. Ce n’est probablement pas la façon dont Xposed sera géré à l’avenir.


Téléchargez le framework Xposed non officiel pour Nougat sur les forums XDA