2020-08-13 14:06

Xposed框架和模块生态系统形式的Android体验

导读尽管OnePlus将手机的Nougat更新推向了稳定的渠道,但我仍然继续在OnePlus 3上继续使用Android 6 0棉花糖的原因是Xposed。该Xposed框架和

尽管OnePlus将手机的Nougat更新推向了稳定的渠道,但我仍然继续在OnePlus 3上继续使用Android 6.0棉花糖的原因是Xposed。该Xposed框架和模块生态系统形式的Android体验,我喜欢一个重要组成部分-的地方,我愿意放弃从OEM最新的OS更新只是为了品尝这甜蜜的水果点。

尽管Xposed for Nougat需要花一些时间,而且我们中的一些人不介意等待更多,但距我们上次听说该项目的进展已经有一段时间了。

XDA高级认可开发人员 rovo89 花了一些时间向我们通报了有关Xposed for Nougat项目的当前情况:

“似乎越来越多的人对是否(何时)会为牛轧糖Xposed感到不安,所以我觉得我应该说些什么。

为什么要花这么长时间?因为在每个发行版中,我都尝试确保Xposed与新ART版本的改进很好地集成在一起。从棒棒糖到棉花糖的步伐并不大。这是一个演变,甚至有些事情使以更优雅的方式集成Xposed成为可能。总体而言,主要是谨慎的移植而不是创新。

使用牛轧糖,根本的情况已经改变。如果您已经在使用Nougat,您会注意到现在的安装速度要快得多。这是因为APK不会立即(AOT)进行编译,而是以(较慢的)解释模式启动。听起来很糟糕,但是他们启用了JIT,它将迅速编译那些经常使用的方法。这将恢复众所周知并不断提高的本机代码性能。除此之外,ART还会保留这些常用方法(“概要分析”)的列表。当设备处于空闲状态时,它最终会基于性能分析数据进行AOT编译。之后,启动应用程序后,您将获得出色的性能。如果使用模式发生变化,JIT仍在等待,我认为它将调整配置文件并改进AOT编译。

这导致各种不同的编译状态和更多的复杂性。除此之外,Xposed需要重新编译整个ROM和所有应用程序,从而导致过去存在许多问题:当odex文件过分预先优化时,有时会导致启动循环,它阻塞了相当大的存储空间来存储重新编译的文件,并且我需要禁用一些优化,例如内联和直接指针调用。我希望我可以利用JIT编译器来避免在Nougat中发生这种情况。如果Xposed从哪里知道方法的调用,它可能会使调用者的编译代码无效,以便他们临时使用解释器。如果它们足够重要,JIT将重新编译它们。

我已经为此做了大量的研究和实验,而我目前正在尝试实现这一点。但是,您可以想象,所有这些都是很大的努力,并且很容易花费数百小时…..” <继续在论坛帖子中>

通常,在业余爱好者项目中,主要的问题是时间的分配,我们了解rovo89的来源。即使Xposed项目目前处于现状,它也需要各种开发人员的数月努力,以使最终用户能够以这种简单且可分配的方式进行娱乐。

正如他们所说,罗马不是一天建成的,但是每小时都在砌砖:

“所以,是的,只要有空闲时间,我仍在努力进行牛轧糖支持,但我不知道何时完成。完成后,您将知道。”

rovo89

Android并不完美,而Xposed是使我们能够解决原始开发人员无法解决的问题。在最新的操作系统上,仍在等待最终的Android修复,我们希望rovo89从头到尾都万事如意。