En approche... le framework XPosed pour Lollipop

Par jhowlett468 - Le 21/02/15 - Affichages : 17502
Image

Cliquez sur l'image pour vous rendre sur le thread XDA concerné - Image de profil GitHub de @rovo89, le dev' de XPosed ;)
Discussion sur XPosed pour Lollipop ICI


Bonjour !!

Déjà, qu'est-ce que XPosed ? Topic détaillé de @franck_29 ICI. Pour faire court et simple XPosed est un framework permettant de modifier le comportement ou les fonctionnalités d'APK voire du système sans modifier directement les fichiers concernés grâce à l'installation de modules au format APK. L'avantage de cette méthode est qu'elle est presque "universelle" et facilement réversible ( désinstallation du module, soft ou hard reboot et piouf modif supprimée... Normalement ).

Pourquoi un topic dédié à XPosed sur Lollipop ? Et bien car Lollipop utilise comme machine virtuelle ART ( plus d'infos sur les machines virtuelles Dalvik et ART sur ce topic ), incompatible nativement avec Xposed, celui-ci reposant sur la machine virtuelle Dalvik. Les gros changements entre ces deux machines virutelles ( et de grosses modifs entre KK et LL peut-être ? ) ont rendu le portage de XPosed... Compliqué. Une alternative semblait être en train d'émerger, El Pollo ( cf ce topic ) mais elle semble au point mort ( une recherche Google "El Pollo XDA" ne renvoie sur aucun topic XDA dédié ). Hasard ou motivation due à la concurrence, suite à l'annonce du développement d'El Pollo, @rovo89 a annoncé dans les jours suivants la sortie d'une version Alpha ( donc pas forcément stable ) de XPosed. La concurrence semble avoir du bon hein ;)

Après ces quelques explications, rentrons dans le vif du sujet :
  • XPosed pour Lollipop est-il fonctionnel ?
  • y-a-t'il des bugs ?
  • les modules déjà existants sont-ils compatibles avec la version Lollipop ?

  • XPosed pour Lollipop est-il fonctionnel ?
    Le framework XPosed Lollipop semble faire bootlooper les appareils en ROM stock Samsung : cela serait dû à un changement au niveau des fichiers .oat présents dans celles-ci. Le bug est connu de @rovo89 et il bosse dessus mais ça risque de prendre du temps. Pour faire simple, pour l'instant XPosed Lollipop ne marche que sur les appareils Samsung en ROM AOSP.
  • Y-a-t'il des bugs ?
    Si le framework installé est trop "vieux" et ne fonctionne pas, il faut le mettre à jour ( minimum en v61 ). En cas de fonctionnement normal mais si la version app_process n'est pas affichée, il s'agit juste d'un bug qui sera résolu plus tard ( on est sur une version alpha ;) ).
  • Les modules déjà existants sont-ils compatibles avec la version Lollipop ?
    Les modules pré-existants pour KK ( et versions antérieures ? ) semblent être compatibles avec la version Lollipop cependant il peut y avoir des bugs étant donné le saut de version Android. Nul doute que les "gros" modules vont rapidement recevoir des MAJs ;)

Situation du projet au 19/02/15 ( traduction [partielle] Google traduction re-traduite par bibi de ce post de @rovo89 ) :

rovo89 a écrit:Le problème le plus important semble être l'incompatibilité avec les ROMs stock Samsung, provoquant des bootloops. J'ai travaillé dur sur ce bug dans les jours suivant la sortie, mais le souci est plus étendu qu'il n'y parait. Merci à @GermainZ qui me sert de testeur et me fournit les fichiers logs ! Jusqu'à présent, j'ai détecté les problèmes suivants:
  • optimisation des fichiers .oat : Samsung a ajouté un "TypeLookupTable", probablement pour des raisons de performance. La table elle-même sera ignoré par XPosed MAIS cela signifie aussi que le format de fichier est légèrement différent. J'ai enfin compris ce qu'ils ont fait et ait ajouté un process permettant de shunter les références à cette table.
  • La taille différente de la classe String: ils ont ajouté une méthode d'effacement (), ce qui est inhabituel comme des chaînes sont généralement immuable. Comme cette classe est l'un des rares à avoir un soutien particulier en code natif, j'ai dû ajouter une entrée à la table virtuelle de la classe.
  • Des champs supplémentaires en classe DexCache: les offsets de certains domaines sont différents. En raison de cela, ils doivent être manipulés en code natif (comme cette autre classe centrale avec des fichiers originaux directement mises en œuvre dans ART).
  • rejet de la vérification ViewDebug class : ne me semble pas être critique, mais à tester si cela fonctionne avec les bibliothèques originales.
  • Mise en œuvre manquantes pour certains processus natives: certains processus Java ont été mis en œuvre en code natif au lieu de codage Java. Cela signifie que je vais devoir les mettre en œuvre de la même manière.

Les modifications effectuées par Samsung sont plus profondes que ce à quoi je m'attendais, en particulier étant donné que ART est très complexe et peu documenté. Quoi qu'il en soit, je pense toujours qu'une fois ces problèmes surmontés, il est préférable de remplacer des bibliothèques que d'essayer de manipuler les structures et les comportements données de «l'extérieur» (app_process). Pensez-y: s'ils ont fait des grands changements, il est très probable que ces changements dans ces structures de données sont différentes des ROMs AOSP et auraient besoin d'un approche particulière ainsi.

Il serait évidemment utile d'avoir un zip de désinstallation au cas où vous rencontreriez un bootloop. Je n'ai pas le temps pour cela encore, mais peut-être quelqu'un peut-il construire une première version qui annule les modifications faites par XPosed. Pour les bibliothèques ART, celà devrait être assez facile. Vous voudrez peut-être de ne pas désinstaller app_process32 au cas où vous auriez installé SuperSU. Il y aura besoin d'une procédure spéciale pour vous assurer de ne pas endommager partiellement ou totalement votre ROM.

[...]

Cela dit, je ne vais pas être en mesure de travailler sur Xposed dans les prochains jours, certainement pas avant lundi. Gardez à l'esprit que ce n'est pas mon emploi à temps plein et que cette phase alpha pourrait prendre un certain temps. Il serait illusoire de penser que nous atteignions un état stable après quelques jours, avec tous les changements qui ont été faits.


Si vous êtes intéressé par XPosed et que vous êtes sous Lollipop ( ROM AOSP ), tous les liens de téléchargenent sont sur le topic XDA.
59 réponse(s) -