Xposed框架过去是——现在仍然是——定制你的Android设备的主要方式,几乎所有设备都兼容,让你可以轻松安装模块,调整几乎所有细节。不刷新就想得到自定义ROM提供的所有功能吗?GravityBox或者XTouchwiz会做这个。是否要为每个应用程序调整一些设置,例如更改特定应用程序的DPI?设置覆盖你。你希望应用程序的开发者考虑添加特定的功能吗,比如谷歌允许你个性化环聊,或者脸书允许你下载喜欢的Instagram帖子?好吧,你不需要这么做,因为Xposed让开发者几乎可以修改任何他们想要的东西,无论是需要定制ROM的全系统功能,还是针对特定应用进行调整。
Xposed framework给开发者带来的一大优势,就是易于开发(相比之下,必须编译AOSP进行ROM调整或者必须编辑Smali代码)。也给用户带来了很大的好处:方便,因为不再强迫他们去寻找和刷新提供他们所需功能的ROM(而是可以混搭独立模块的ROM),而ROM提供了他们所寻找的每一个功能。以及稳定性和性能。这也使得调整应用程序更加容易,因为不需要处理不同的签名。因此,当应用程序检查其签名时,它会要求用户卸载原始版本或跳过一些特定操作(例如,由修改后的YouTube客户端处理的操作)。
唯一的问题?由于Xposed的开发者(我们自己的资深公认开发者rovo89)的性质和空闲时间,通常会落后于Android版本。更新到支持棒棒糖大概用了四个月,牛轧糖大概用了一年。考虑到实际上有多少Android用户在牛轧糖上,它并没有看起来那么糟糕(大约13.5%,尽管要记住Xposed的目标受众Android爱好者也更有可能在牛轧糖上使用它)。但是如果不能同时使用自己喜欢的Xposed模块和最新最好的Android版本,还是会很烦。
有了Xposed框架的源代码(至少对于一个稳定发布来说是这样),开发者abforce决定做一下,看看rovo89的一些修改能否移植到牛轧糖上。为了采用另一种更简单的方法,abforce本质上是对Xposed在安装magic后实际执行的部分进行了适配,并使得在编译自己的ROM时包含它成为可能(此后,其他解决方案也浮出水面)。可以说这种方法非常与众不同,因为它忽略了Xposed的一个核心优势,每个人都可以轻松使用。但是,所有的进步都是可喜的,解决问题的多头可能是有益的,并提供新的见解。我们看到的主要问题是围绕这一开发的错误信息(由其他“开发者”和一些博客传播)以及来自社区的一些反应。希望这篇文章能让整个情况更加清晰。
Xposed是如何工作的?
首先,为了了解正式的Xposed框架和abforce版本所做的工作,以及还在进行的工作,我们需要研究框架的工作模式。虽然框架本身只是项目的一部分,但通常意味着双方的框架和安装的框架都失去了很多优势,只是没有通用的安装程序,很多工作做的比较好。
Xposed的强大功能来源于一个简单的概念:你可以“挂钩”任何方法(方法是组成任何程序的一小部分),使Xposed模块的代码可以在执行前、执行后或代替执行。我们举个简单的例子:假设Instagram在点击菜单按钮时使用了一个名为“showMenuOptions”的方法,这个方法可以处理向你显示“报告”和“分享”按钮的问题。通过创建Xposed模块,您可以修改此方法,添加其他按钮来下载图像,而不是共享图像。修改的范围从简单的调整(如播放商店变更日志)到全面检查(如GravityBox,旨在提供定制rom将具有的所有功能)!
这使得Xposed变得强大,但这只是等式的一部分。其他的是多功能性——或者你实际上可以在几乎任何设备上使用Xposed(带有支持的Android版本),而且很容易使用。所有用户需要做的就是抓取安装程序,它将发挥其魔力,动态修补他们的系统,以集成Xposed。要应用该模块,您只需安装、启用并重启它。没必要大惊小怪,刷新自定义ROM(特别是当自定义ROM并不总是可行的选项时),在不卸载APK的情况下安装另一个不同签名的签名。你需要的只是root(你绝对可以有一个自定义的ROM,这在很多情况下是有意义的;但是Xposed可以提供自定义ROM可以提供的大部分功能,但是除此之外)。
然而,在这种简单背后仍有大量工作要做:
对于模块开发者来说,提供的API必须是稳定的,能够正常工作。Xposed框架不会因为一些ROM和/或hook组合而随机失效(特殊情况除外)。换句话说,如果用户遇到问题,应该是用户的错(安装/启用某个功能不正确)或者是模块开发者的错(模块有错误)。但是,几乎可以肯定的是,框架本身是按照预期工作的,并不是错误的根源导致了用户的沮丧和开发者的困惑。
对于用户来说,该框架必须易于安装在他们的设备和rom上,无论他们是运行最新版本TouchWiz的三星还是安装了LineageOS的Nexus。横坐标
ed安装程序可处理所有幕后操作。要在各种设备和ROM组合上测试安装程序和框架,必须进行大量工作。发现错误通常是由于OEM的实施方式不同,因此必须进行修复以确保所有用户的可靠性。Android的主要修订版有时可能会带来重大更改,这需要重新考虑框架架构的某些部分以适应这些更改。有时,新版本还会带来更多机会,需要更多时间才能拥有更好的产品。例如,首次引入ART时,使Xposed禁用某些优化,以便挂钩可以正常工作。在Nougat的情况下,即时(JIT)编译器为保持这些优化提供了机会。
上面的许多工作都涉及一些次要细节,其中大多数框架都按预期运行,但是不一致和次要问题将使它成为用户使用的,以及模块开发人员的支持和开发噩梦。但是,发布的产品旨在使所有人都能使用而不会感到意外。当然,也有一些例外,因为某些OEM的更改需要付出更多的努力才能适应,但是这些更改很小,绝大多数用户(和开发人员)都可以享受稳定可靠的Xposed体验。任何遇到的异常都会以明确的免责声明记录在案,因此不会有人感到惊讶。
考虑到以上几点,rovo89对Xposed的愿景是成为一个稳定的解决方案,为用户和开发人员提供可靠且易于使用的合同。他的理念(尽管您可能不同意)是简单易懂的:在准备好按预期使用时应该发布产品,因为在发布产品之前会带来更多的麻烦而不是收益。
abforce的牛轧糖Xposed ART子模块
我们不愿意将abforce的工作称为“端口”或“非官方的Xposed”,因为这是不准确和误导的。如我们所见,Xposed具有两个主要组件:
Xposed框架本身的核心,它处理了挂钩方法的魔力。
Xposed安装程序,可确保易于在所有设备上正确安装框架。
abforce所做的就是将rovo89的Marshmallow代码在第一部分(仅限Xposed框架)移植到Nougat,这种方式要求在编译自定义ROM时先进行更改。除此之外,该框架的许多次要(但很重要)部分还没有完全适应于Nougat。因此,行为可能会不一致,虽然大多数情况下都行得通(尽管并不 适合 所有人),但这并不可靠。对于模块开发人员和用户而言,依赖于不完整和不一致的实现将给所有相关方面带来糟糕的体验,其中某些模块根本无法正常工作或导致设备无法启动。虽然许多用户可以拥有某些东西而不是什么都可以,开发人员的观点仍然是可以完全理解的(尤其是如果您牢记免责声明并不能阻止虚假的支持问题和抱怨)。
(除了以上两个要点之外,我们还将期望对最终的正式Xposed框架进行进一步的更改,以利用Nougat中引入的更改。)
应该指出的是,当大多数人只满足于说话时,abforce的表现出色,但是他的工作远没有完整的Xposed经验,并且没有开发人员或博客声称自己是其他人(而且绝对不是abforce;再次,我们除了尊重之外所有为此付出实际努力的实际开发人员)。实际上,正如我们稍后会谈到的那样,社区的某些响应(无论是用户还是“开发人员”)是这一系列开发中唯一令人毛骨悚然的部分。
社区回应
让我们切入正题,直截了当地:任何社区都有不好的元素和方面。与Android爱好者一样庞大的社区,不良因素似乎只是很大一部分(相当大,但相对而言仍然很小)。但是,如果不加糖衣,社区对开发Xposed for Nougat的反应非常幼稚,不体贴或不负责任。
第一个主要问题是许多人对“ Xposed的死亡”表现出的居高临下的态度,因为对于牛轧糖来说,发布它花了太长时间。尽管rovo89进行了更新 和 保证,并且尽管在引入ART的最初版本时Lollipop确实发生了确切的情况。停止使用Xposed是很好的选择,但这不是要侮辱任何人的能力或攻击别人,因为他们有不同的理念,或者不确保立即满足您的闪烁需求。对于完全免费的项目,情况更是如此,开发人员已在其中表达了他的开发方法和背后的原因。
社区反应的另一个问题是误解了abforce的工作性质,许多人称赞abforce为新的Xposed或宣传它为Nougat的港口。与此相关的一个主要问题是“开发人员”在不了解(或关心)缺点的情况下急于提供可更新的版本,因为在某些线程中根本没有提供免责声明,甚至有人甚至放弃了免责声明而不是rovo89。 (他们在Xposed上的大部分工作都在后面)和其他贡献者。
最后,我们认为我们应该再次提出rovo89的开发理念。有许多声音用户声称,将最新更改开源是有益的。虽然从理论上讲听起来不错,但在实践中并不容易,尤其是考虑到rovo89的解释:
[…]我认为仅仅推出当前状态不会对项目有所帮助。我们可能会看到编译代码的人真的很快地发布了“某些”版本,看到了它们似乎运行良好,并且将其发布为“它们的端口”,尽管他们不知道有什么问题和要做的事情。所以说我很自私,但我不想看到这样一个半成品。[资源]
事实证明,这是对当前情况的相当不错的预测,几个“开发人员”应用了abforce的更改,并提供了可闪烁的ZIP,几乎没有警告或没有警告,信用不完整,同时都要求捐款。
我们希望这些解释能消除您的一些疑虑,并解决您可能产生的误解。Xposed是一个了不起的项目,已经在我们的爱好者和闪光狂社区中占了很大一部分,而Xposed for Nougat应该是充满机遇的又一个巨大里程碑。由于像GravityBox这样的模块已经提供了Nougat支持,因此rovo89的完成项目将返回到许多选项。
标签:
免责声明:本文由用户上传,如有侵权请联系删除!