关于Xposed框架在Android7.0上的一些消息,目前其作者rovo89在git上再次做了一些回复,从作者的意思来看至少这个项目还是没有死掉的,应该还有戏,主要的问题在于Xposed框架不像是一般的软件开发能够垂直前进,目前的状况是走一步算一步,走完一步才有下一步要做什么的打算,而作者也没有一个比较集中的时间来持续战斗。当然作者也考虑了其他愿意加入到xposed框架工作中的开发者,不过他自己感觉是并没有什么帮助,并且可能担心这些开发者心急只搞出个半成品来就不好了,所以也请大家能够再多一些耐心,毕竟也是rovo89的东西,怎么办还是人家说了算,更谈不上别的。

0823更新以下作者最近的动态,想来作者应该一直在努力适配Nougat官方版本的xposed框架,这不Android8.0也就是O,奥利奥版本都已经正式发布了,也难怪大家着急,有人在官方的项目下问了O版本在将来的适配情况,Rovo89表示还是非常乐观的,也就是说当Nougat版本适配之后,O版本也会很快的推出,毕竟不像是Android6.0~Android7.0的跨度和变化这么大。

非官方的Nougat版Xposed框架已经推出:

来来来,非官方版本的Android7.0/7.1系统Xposed框架已经发布!SDK24/25均已支持前两天还说,暂时没指望,过两天就惊喜来了,在之前的一篇文章里面才提到作者对其它开发者的加入表示欢迎之后非rovo89本人...
77730 51

当然别人加入开发就一定会有一些效果的,git上有一个项目大家可以看看:
ART module for a built-in enabled Xposed firmware based on AOSP 7

来自git项目上在7.10日的答复:

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!

不细致翻译了,大体上如下(2月的xda答复):
看上去越来越多的人对于Android 7.0版本的Xposed框架能否以及什么时候能够发布表示担忧,因此我(作者rovo89)觉得有必要说两句。
首先,为什么Android7.0的版本耗费了如此长的时间?因为每次的发布作者都要努力确保Xposed与新的ART版本能够完美适配,不是从Lollipop 到 Marshmallow这种级别的变化,这可以说是一种飞跃,甚至能够在某些方面能够让Xposed与Android系统结合的更完美,而Xposed则可以更加简洁,基于以上的种种,作者需要小心对待。

Android 7.0 Xposed 框架

Android 7.0 Xposed 框架

总之是由于Android 7.0本身的一些变化加上作者的时间并不是很充沛造成了这个版本拖得如此之久,按照作者自己的比方假如每天倒腾24小时,可能一两周也就能搞定,但现在的情况是可能一个月也不见得有24小时能够用于Xposed的开发,所以对于Android 7.0 的xposed框架什么时候能够发布,作者也是不确定的,大家耐心等待吧。

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.

原文链接:https://forum.xda-developers.com/showpost.php?p=70773752&postcount=41