Many people want to use their phone how they want to, not how a manufacturer wants them to. For these people they have the option of installing a custom ROM or using the Xposed Framework. Often the user may also want to circumvent restrictions placed on the user by an app developer and to do this they need to use a hacked version of an app or use the Xposed Framework. I would never encourage ANYONE to use a hacked version of an app, so the only sensible solution is using the Xposed Framwork.
The Xposed Framework, if you are new to Android, is a framework that the user, with root access, can install onto their device that allows calls and functions of apps to be intercepted and replaced with a different “answer”. This is a very basic explanation and for a more detailed explanation I encourage anyone interested to read an earlier piece from Ausdroid where I explained in detail how it functions. In a nutshell it changes the way your device reacts, runs, and/or looks with any, some, or all apps and it does so while running the stable, stock ROM that the original manufacturer built for your device.
Each year when a new version of Android is released the Xposed Framework also needs to be updated to deal with the new security and features of the release. This year with Nougat there have been a lot of changes under the hood of Android, including the JIT compiler. Android has changed the way it handles apk files and as such Xposed needs to change so it can still intercept these calls from the apps. This year the changes are much more significant than in previous years and as such may take a lot longer to respond to. Rovo89 has taken to his XDA forum thread to explain where he is at with the Xposed Framework for Nougat development.
The entire update from Rovo89 (with a tl;dr version below the following quote) is as follows:
It seems that more and more people get nervous about whether (and when) there will be Xposed for Nougat or not, so I felt I should say something.
Why does it take that long? Because with every release, I try to ensure that Xposed integrates nicely with the improvements in the new ART version. The step from Lollipop to Marshmallow wasn’t huge. It was an evolution, some things even made it possible to integrate Xposed in a more elegant way. On the whole, it was mainly careful porting than rather innovating.
With Nougat, something fundamental has changed. If you’re using Nougat already, you’ll have noticed that installations are much faster now. That’s because APKs aren’t compiled immediately (AOT), but start in (slower) interpreting mode. Sounds bad, but they have enabled JIT, which will quickly compile those methods that are used very often. That will restore the well-known and constantly improving performance of native code. Besides that, ART keeps a list of these frequently used methods (“profiling”). When the device is idle, it finally does the AOT compilation, but based on the profiling data. After that, you get the great performance right after starting the app. JIT is still waiting in case the usage patterns change, and I think it will also adjust the profile and improve the AOT compilation.
That results in various different compilation states and more complexity. Besides that, there were many issues in the past caused by Xposed’s need to recompile the whole ROM and all apps: It sometimes caused boot loops when the odex files were too heavily pre-optimized, it blocked quite some storage space to store the recompiled files, and I needed to disable some optimizations like inlining and direct pointer calls. I hope that I can make use of the JIT compiler to avoid that in Nougat. If Xposed knew from where a method is called, it could invalidate the callers’ compiled code, so that they would temporarily use the interpreter. If they’re important enough, JIT will recompile them.
I have already done a lot of research and experiments for this and I’m currently trying to implement this. But as you can imagine, all of that is much effort and can easily take hundreds of hours. That’s net (working) time, not real time. If I worked on Xposed 24 hours a day, that might be done within a week or two. But, in the last year or so, my “time for Xposed stuff” was about 5 hours a week, sometimes more and sometimes less. You can do the math yourselves… There are just so many other (non-technical) things that I need or want to do. If you substract the time it took me to build the new installer version, move the repo to a new server and restore compatibility with the Nov 2016 security patches, that’s even less time for new stuff.
So yes, I’m still working on Nougat support, whenever my free time allows it, but I don’t have any idea when it will be done. Once it’s done, you’ll know.
Tl;dr : Developer of Xposed Framework, Rovo89, has very little spare time (5 hours a week) to do for something that is a hobby for him (I bet if everyone who used Xposed donated $1 a month to his cause he could do it full time – think about that). Not only is he working on developing Xposed for Nougat but he is also knee deep in keeping Xposed for Marshmallow working at the same time.
With Android now using JIT and keeping a list of frequently used methods, it makes it difficult to determine where a method is called from and intercept it and change the call. Rovo89 has “done a lot of research and experiments” with this but is not at a stage where it is ready to be used for all methods. In the end the answer is that yes, he is working on it, progress has been made but it is not ready for prime time yet (and it doesn’t sound like it is very close).
For reference, last year Rovo89 managed to get Xposed working around the 11th of February and released it 3 days later. With him having less time this year and the code being harder to circumvent/work with I wouldn’t expect any form of a finished product until at least March.
For those running Nougat on their phones there is always the option of running a custom ROM (I have a writeup on Pixel hacking coming in the following days BTW) if you wish to change/add features to your manufacturer’s ROM. Custom ROMs rarely have the stability of a stock ROM so for most people a stock ROM with Xposed Framework is the only option. In the grand scheme of things it sounds like that if Rovo89 can get this working it will be better than ever and make use of Google’s JIT compiler. It will be ready when it is ready. Until then, be patient and keep an eye out here for any further updates.
Last modified on 30 January 2017 8:08 pm