The developer of Xposed framework “rovo89” has gone ahead and provided an update behind the delay in releasing a compatible version of the framework for Nougat. The developer has explained in the post the reason behind the delay in getting Xposed framework to work on the latest and sweetest version of Android.
Rovo explains that with Nougat, Google has changed some fundamental parts of Android. This is evident from how fast applications under Nougat due to the slower interpreting mode compared to the AOT compiler that was used in Lollipop.
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.
The new compiler along with the addition of JIT results in various compilation states that increase complexity. Add in other issues that existed in previous versions and things get even more complex.
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.
It’s not like Xposed framework will not come to Nougat. The developer has already done a fair bit of research but has been unable to implement it due to the lack of time.
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, if you have been eagerly waiting for Xposed framework to arrive, be prepared for the wait to continue.
[Via XDA Forums]