Perché Xposed non è ancora disponibile per Android Nougat? Ve lo spiega (di nuovo) rovo89

Edoardo Carlo
Edoardo Carlo
Perché Xposed non è ancora disponibile per Android Nougat? Ve lo spiega (di nuovo) rovo89

Molti utenti amanti del modding hanno imparato a conoscere ed apprezzare lo sviluppatore rovo89, in particolare per la sua celebre creazione: Xposed Framework. Si tratta appunto di framework modulare che consente di personalizzare in modo molto profondo il firmware del proprio smartphone, senza dover ricorrere all'installazione di una custom rom. Disponibile per Lollipop e Marshmallow, la versione per Android Nougat si sta ancora facendo attendere, mentre ormai il rilascio di Android O è alle porte. Vi abbiamo più volte parlato dei motivi di questo ritardo, ma rovo89 ha voluto nuovamente intervenire per dire la sua sulla situazione.

Intanto va specificato che Xposed non consiste nel lavoro che rovo89 svolge per vivere. Ha sicuramente ricevuto molte (doverose) donazioni nel corso degli anni, ma come ogni sviluppatore indipendente, continua il suo lavoro su Xposed principalmente per soddisfare la sua passione. Per questo, il tempo da dedicare al progetto è sempre minore, fattore che non gli ha permesso di portarlo a compimento, per ora.

Inoltre, rovo89 si è autodefinito un perfezionista: non ha alcuna intenzione di rilasciare una versione zoppicante di Xposed, incompleta nelle funzionalità e instabile nel funzionamento. Questo perché appunto, per una sua inclinazione personale, non sarebbe accettabile e inoltre perché ciò rischierebbe di creare problemi agli utenti. Si potrebbe obiettare che una versione beta di Xposed per Nougat potrebbe fornirgli preziosi feedback su come migliorare la sua creatura, ma rovo89 stesso afferma che, per esperienza personale, difficilmente qualcuno sarebbe in grado di aiutarlo, perché sarebbero necessarie delle profonde conoscenze su Android e su ART.

Ecco quindi spiegato perché rovo89 non abbia ancora pubblicato una versione di Xposed per Nougat, né sia in grado di dire quando ciò accadrà. Gli utenti dovranno quindi continuare a pazientare, effettuare donazioni (che lui comunque non richiede esplicitamente) per supportarlo e semmai proporsi di aiutarlo se davvero fossero dotati di conoscenze specifiche in materia.

You can have that opinion - but in the end, it's my own decision whether I want to publish my current WIP or not, and you'll have to respect that decision.

There are a couple of reasons why I won't do that. Working on Xposed isn't really straight-forward, it's an iterative process in which I hardly know what to do next until it's done. That makes it quite hard to work on it with someone else, unless there's some really close communication and common understanding how things should work. Given that my time for Xposed is pretty unreliable, I would not be able to fulfill my part in this. Besides that, I'm a perfectionist. I wouldn't accept any foreign code without very close review to make sure it's "the right way" to implement it. This would also be very time-consuming. It might work if that other person has thoroughly studied how ART works and did a lot of research to understand how Xposed can best be integrated into it. However, my experience shows that even for previous releases (for which the source code is published), there wasn't really anyone who digged into it deeply enough to help analyse and fix some of the issues.

If somebody contacted me saying "hey there, I checked out the ART source code and I think I understood in general how it works. here are some ideas how I would implement Xposed for Nougat it, can I help you somehow?", then I would consider giving it a try, but I believe that just pushing out the current state wouldn't help the project. We would maybe see "some" release really fast by people who compile the code, see that it appears to be working fine and publish it as "their port", despite the issues and things to do that they wouldn't be aware of. So call me selfish, but I wouldn't want to see such a half-finished release.

That said, I'm now at a point where I'm wrapping up some things, reviewing the big amount of changes I've done in the last months and clustering them into individual commits to keep the overview. I think I got some really nice technique working to ensure that the apps can still be compiled with all the optimizations enabled. When a method is hooked, its callers will be deoptimized, but can later be compiled again (with optimizations, but also knowing about the hook). That's possible in Nougat thanks to JIT, which wasn't enabled in previous versions. So it's not just a simple port of Xposed, important parts are actually re-invented. There are still many tasks though before this can work beyond my test cases, so you'll have to be patient and stay tuned!