Le cadre officiel Xposed pour Android Nougat est arrivé - Téléchargez vos modules favoris maintenant!

Comme l'écosystème Android a mûri au fil des ans, de moins en moins d'utilisateurs trouvent les raisons pour lesquelles ils devraient installer leur appareil. De plus en plus d'utilisateurs choisissent de rester sur le micrologiciel standard, soit parce qu'ils trouvent l'expérience satisfaisante, soit qu'ils ne veulent pas jouer au chat et à la souris avec l'API SafetyNet de Google. Mais si vous demandiez à un utilisateur au début de 2016 pourquoi il avait enraciné son téléphone, la principale raison invoquée était peut-être pour pouvoir installer Xposed Framework. Cela fait plus d'un an qu'Android 7.0 Nougat est sorti, mais la longue attente est enfin terminée: le framework officiel Xposed pour Android Nougat est enfin disponible.

Au cours de l’année écoulée, rovo89, développeur reconnu et reconnu, principal développeur de Xposed Framework, a fourni plusieurs mises à jour sur les progrès réalisés par Xposed Framework pour Android Nougat. Pour certains, l’attente a été tolérée principalement en raison du grand nombre de fonctionnalités supplémentaires offertes par Xposed Framework dans Android Marshmallow. Mais beaucoup d'autres sont passés à une vie sans Xposed sur leurs appareils.

Nous avons entrevu un regain d’enthousiasme dans le projet lorsque le développeur abforce a publié un sous-module ART pour AOSP 7.1.2, mais comme notre propre GermainZ l’a souligné, vous feriez mieux d’attendre la publication officielle de Xposed Framework car la mise en œuvre d’Abforce nécessitait de intégré dans des ROM personnalisées. De plus, cette implémentation non officielle était incomplète, ce qui entraînait un comportement incohérent ou problématique avec certains modules Xposed.

Bien qu'abforce ait fait un excellent travail en faisant travailler son Xposed non officiel sur Android 7.1 Nougat, sa mise en œuvre a été contraire à la vision de rovo89 pour Xposed: il devrait s'agir d'une solution stable fournissant un contrat fiable et facile à utiliser pour les utilisateurs et les développeurs. Nous entendons par là que non seulement les modules devraient fonctionner sans problème pour les utilisateurs, mais que leur configuration devrait être cohérente pour que les développeurs sachent si un module Xposed est à l'origine du blocage d'une application.

Rovo89 (après l’aide de Recognized Developer wanam) est maintenant prêt à publier une mise à jour officielle de Xposed Framework and Installer, assurant la compatibilité avec Android 7.0 / 7.1 Nougat . Cela signifie que vous n’aurez pas besoin d’installer une ROM personnalisée ni de jouer avec les versions instables clignotantes pour profiter de Xposed: il vous suffit de rooter votre téléphone et d’installer la dernière application du programme d’installation Xposed (liée ci-dessous). pour toi .

Xposed Installer parcourant le référentiel de modules

Cela peut sembler un peu tard dans l’esprit, d’autant plus que cette version arrive plus d’un mois après la sortie d’Android 8.0 Oreo. Gardez à l'esprit que très peu d'appareils auront accès à une version stable d'Android Oreo pendant plusieurs mois. Android Oreo ne représente que 0, 2% de tous les appareils Android (contre environ 18% sur Nougat) selon les dernières statistiques de Google, mais bon nombre de nos utilisateurs sont du genre à aimer installer des ROM personnalisées pour rester à la pointe de la technologie.

Distribution de la version Android à partir d'octobre 2017. Source: Google

Même si vous installez un port non officiel d'Android 8.0 disponible sur une multitude de périphériques sur nos forums, nombre de ces ports ne sont pas le statut de pilote quotidien. Donc, à moins que vous ne vouliez débourser des centaines de dollars pour un tout nouveau Google Pixel 2/2 XL, un Sony Xperia XZ1 / XZ1 Compact ou un appareil à venir comme le Huawei Mate 10, vous pourrez probablement presser plusieurs mois d’utilisation de Xposed Framework sur Android Nougat.

Si cela vous ressemble, rendez-vous sur le fil de discussion officiel du programme d'installation Xposed Installer et des zips de structure pour le rendre opérationnel sur votre appareil Android Nougat.

Télécharger Xposed Installer v3.1.2 (Pièce jointe)

Xposed Installer for Nougat 7.0 (SDK24) Télécharger

Xposed Installer pour Nougat 7.1 (SDK25) Télécharger

Pour les nombreux nouveaux utilisateurs qui ne connaissent pas aussi bien l'utilisation que le framework Xposed, ni son fonctionnement, nous expliquerons brièvement le framework Xposed ci-dessous, pourquoi vous devriez être enthousiasmé et pourquoi le développement a pris autant de temps. .


Pourquoi installer le framework Xposed?

Vous voulez obtenir des fonctionnalités de ROM personnalisées sans flasher une ROM personnalisée? La mère de tous les modules Xposed pour modifier votre ROM, appelée GravityBox, vous a couvert. Vous souhaitez personnaliser les paramètres d'affichage application par application? Essayez les paramètres de l'application. Pourquoi ne pas personnaliser certaines applications telles que Hangouts? Ou modifier Instagram pour pouvoir télécharger les publications de votre choix?

Contrôle de notification GravityBox

Paramètres de l'application

Xposed offre aux développeurs la possibilité de modifier à peu près tout ce qu'ils veulent - principalement pour des applications individuelles, mais même des fonctionnalités à l'échelle du système peuvent être modifiées. Les exemples que nous avons énumérés ne sont que la pointe de l'iceberg. Le nombre de fonctionnalités supplémentaires que vous pouvez ajouter ou d'applications que vous pouvez modifier est incroyable - il suffit de parcourir le référentiel officiel de Xposed Module pour le voir par vous-même. Gardez à l'esprit que certains modules devront peut-être être mis à jour pour cette nouvelle version et pour le support Nougat. Assurez-vous donc de les vérifier avant de les installer sur votre ROM Nougat!

Comment fonctionnent les modules Xposed?

L'essentiel est que Xposed Framework permet aux modules de «se connecter» aux méthodes Java de n'importe quelle application, qu'elle soit installée par l'utilisateur ou une application système. Xposed permet aux modules d'exécuter leurs propres méthodes avant, pendant ou à la place des méthodes d'origine de l'application cible.

Par exemple, imaginez une méthode utilisée dans l'application Gmail pour publier des notifications pour les nouveaux emails. Par défaut, la méthode crée une nouvelle notification avec des boutons pour archiver / supprimer ou répondre au courrier électronique. On pourrait faire en sorte qu'un module Xposed se connecte à cette méthode et ajoute un nouveau bouton tel que «marquer comme lu». (Oui, il existe déjà un module pour cela.)

Ce qui précède est une simplification excessive du résultat final de ce que Xposed Framework permet à ses modules de faire. La structure elle-même est incroyablement complexe et la raison pour laquelle Xposed pour Android Nougat a été si longue est de fonctionner presque universellement sur les périphériques enracinés.

Pourquoi le développement de Xposed prend-il tant de temps?

La magie derrière Xposed - ce qui permet aux modules de s’intégrer aux méthodes d’autres applications - nécessite une connaissance approfondie du fonctionnement de Zygote et d’Android Runtime (ART). Ces exigences empêchent déjà un grand nombre de personnes de contribuer au projet, mais le problème est exacerbé par le fait que le rovo89 est le principal contributeur à Xposed depuis 5 ans .

C'est pourquoi les appels à l'open source ont été rejetés. Les modifications apportées à Xposed depuis la dernière version publique de Xposed ont été refusées. C'est son idée originale, et il est le meilleur pour le comprendre et le modifier. Par conséquent, ajouter plus de personnel au projet à une étape aussi tardive pourrait simplement retarder davantage le projet.

De plus, si rovo89 mettait régulièrement à jour sa source, il craignait que quelqu'un prenne le code inachevé pour créer un cadre Xposed semi-fonctionnel sans le programme d'installation Xposed universel qui l'accompagnerait. (C'est exactement ce qui s'est passé de toute façon avec l'implémentation abforce, et le fouillis résultant de diverses méthodes d'installation a justifié l'hésitation de rovo89.)

Ainsi, la meilleure chose à faire était de donner à rovo89 le temps de travailler sur son projet animalier. Xposed n’est pas son travail à part entière ni même à temps partiel. C'est simplement un passe-temps qu'il pratique depuis 5 ans au profit de la communauté. Un projet aussi complexe que Xposed nécessite du temps pour travailler puis pour mettre à l’essai - du temps qu’il n’avait pas souvent à cause de ses autres obligations. Des progrès ont été accomplis au cours de l’année écoulée, comme rovo89 l’a documenté dans quelques-unes de ses mises à jour publiques sur le sujet jusqu’à ce que le cadre Xposed lui-même et l’installateur Xposed soient prêts à être publiés.

Qu'est-ce que rovo89 a fait pour que Xposed travaille dans le Nougat?

Les nouvelles versions d'Android apportent parfois des modifications au fonctionnement d'ART, ce qui peut nécessiter de retravailler certaines parties de Xposed. Android 7.0 Nougat a mis au point un compilateur Just-in-Time pour ART afin d'améliorer les performances d'exécution des applications, par exemple. Mais le framework non officiel Xposed de abforce désactive simplement de nombreuses optimisations ART afin que le raccordement de méthodes puisse fonctionner correctement.

Optimisations ART dans Android Nougat. Source: Google

En revanche, la mise en œuvre de rovo89 conserve toutes les optimisations ART dans Android Nougat en recompilant l'appelant d'une méthode à l'aide de JIT tout en maintenant les crochets de méthode en place. Cela signifie que vous pouvez profiter des avantages d'un module Xposed sans sacrifier les performances en désactivant avec force les optimisations ART.

Pour plus de détails sur ce que rovo89 a fait pour enfin mettre au point une méthode d’accrochage fiable dans Xposed pour Android Nougat, nous vous recommandons de lire la déclaration ci-dessous qu’il nous a fournie.

Déclaration complète de rovo89

Le cœur de Xposed réside évidemment dans sa capacité à connecter des méthodes Java, c'est-à-dire à laisser les modules exécuter le code avant, après ou à la place de ces méthodes. Presque toutes les autres fonctionnalités sont basées sur cela, il est donc essentiel que cela fonctionne toujours comme prévu. Le concept général est le même depuis que j'ai inventé Xposed il y a cinq ans. Cela nécessite de changer le point d'entrée de la méthode. Cela commence à échouer lorsque le point d'entrée n'est pas vérifié pendant l'exécution - ce qui est en fait le cas avec certaines des optimisations dans ART.

Par exemple, lorsque le point d'entrée est déjà connu au moment de la compilation, les appelants peuvent directement accéder à cette adresse sans la rechercher. Un autre exemple est en ligne. Considérons cet exemple:

ART est assez intelligent pour remarquer que la méthode once () est très simple et intègre donc la logique directement dans la méthode doSomething (), comme ceci:

Vous pouvez toujours accrocher la méthode both (), mais elle ne sera plus appelée depuis doSomething () au moment de l'exécution, et votre rappel ne le sera plus. L'ART est encore plus intelligent: il réalise que la magie a toujours 42 ans et que, par conséquent, la condition ne peut jamais être remplie. Donc, toute la méthode doSomething () est en fait un non-op:

Dans les versions précédentes, Xposed désactivait complètement ces optimisations et forçait la recompilation de tout. Cela est venu avec plusieurs inconvénients. Tout d’abord, les développeurs d’ART réalisent un travail fantastique en optimisant les performances avec leurs optimisations, et les désactiver partiellement conduit nécessairement à moins de performance (je n’ai jamais mesuré à quel point). Ensuite, la recompilation en elle-même n'est pas toujours facile et m'a causé beaucoup de maux de tête, surtout au début. Enfin, les fichiers recompilés prennent de la place, en plus des fichiers précompilés sur / system.

Les versions non officielles de Nougat désactivent également ces optimisations, mais elles ne forcent pas la recompilation (car le port devait à l'origine être intégré à la ROM). Par conséquent, les hooks peuvent ne pas être exécutés parfois.

Avec la version officielle, vous garderez le code optimisé tout en conservant des points d'ancrage fiables. Comment ça marche? Eh bien, Xposed enregistre tous les appels passés. Cela se produit lors de la compilation des fichiers APK, ou dans une passe distincte pour le code préoptimisé. Ces données supplémentaires ne prennent pas beaucoup de place, mais permettent à Xposed de savoir où une méthode donnée aurait pu être en ligne. Ainsi, lorsqu'une méthode est connectée, tous ses appelants sont désoptimisés, c'est-à-dire que leur code ne sera plus utilisé. Cela garantit que le rappel du hook sera appelé. Et si l'appelant est très utilisé, il sera simplement recompilé avec JIT, cette fois en sachant que la méthode est connectée et que, par conséquent, certaines des optimisations ne s'appliquent pas. Cela signifie que les effets des méthodes d’accrochage sont réduits au strict minimum. Yay!

Maintenant, allez-y et essayez-le. Veillez à utiliser Xposed Installer 3.1.2, car le chemin de configuration a dû être modifié pour prendre en charge le cryptage basé sur fichier.

Conclusion

Nous espérons que vous êtes aussi enthousiastes que nous sur la sortie de Xposed pour Android 7.X Nougat. L'attente a été longue, mais inévitable compte tenu de la complexité même de Xposed. Si vous ne savez toujours pas ce qu'est Xposed ni comment il fonctionne, ne vous inquiétez pas. Très peu de gens (nous inclus) comprennent réellement comment cela fonctionne. Les développeurs tels que rovo89 font de leur mieux pour conditionner leur travail afin de ne pas avoir à comprendre ce qui se passe sous le capot.

Aimez-vous le framework Xposed? Pensez à faire un don à rovo89 pour le travail impressionnant qu’il accomplit. Si vous pensez avoir ce qu'il faut pour contribuer au projet, consultez la page GitHub de rovo89 ci-dessous.

Faire un don à rovo89

Contribuer à Xposed

Vous recherchez des modules Xposed? Consultez notre sous-forum sur le module Xposed Framework ou téléchargez l’application Labs et parcourez notre collection de modules Xposed.

Forum des modules Xposed

Télécharger des laboratoires

Android Oreo Progress

Au cas où vous vous le demanderiez, voici comment nous avons progressé dans l'obtention de Xposed pour Android Oreo:

J'ai déjà commencé à travailler sur Android 8.0. Je vais devoir examiner quelques nouvelles fonctionnalités linguistiques, mais le concept général devrait toujours fonctionner. Cela inclut tout le travail sur l'invalidation du code compilé de tous les appelants lorsqu'une méthode est connectée, ce qui a pris de loin le plus de temps lorsque j'ai travaillé sur Nougat. Donc, je suis vraiment confiant que je serai beaucoup plus rapide cette fois. Android 8.1 ne devrait pas être très différent, alors je ne m'attends pas à beaucoup de travail supplémentaire.