The Xposed framework is one of the most loved feature for rooted Android devices. It's a set of tweaks, as the name implies, a framework where other developers can run their own code, known as modules.
It's been a few months since Google launched Android 7.0 and more recently, Android 7.1. With the release of new Android versions, Question arises, When will the Xposed framework finally support Android 7.0 and above? Will it?
Here is a quick update on the current status of the framework on Nougat
“Hooks are generally working now. However, they’re still unreliable for inlined methods and when JIT is used (which is often the case). I had given a few technical insights here. I’m currently thinking about the different situations that need to be handled and I create unit tests for them. Then I need to fix those which are failing or even crashing the device – ideally without recompiling the whole ROM like in previous versions. Not sure if the latter is possible though.” -rovo89
Update 2: 28th January 2017
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. -rovo89 (XDA)
Xposed for Nougat status: Not yet available to Download