如果你喜欢折腾 Android 设备,那么你应该对 Xposed 的大名有所耳闻。

这个第三方框架,让许多 Android 玩家都爱不释手。通过对系统框架的「偷天换日」,它可以修改系统与应用的各种数据,籍此实现无数种可能性,同时也大大地提升了 Android 系统的可玩性。
参考阅读:关于 Android 7.1 的 Xposed,你想知道的都在这
但由于涉及到对系统底层的一些改动,Xposed 的使用也有着各种限制;例如,必须要解锁手机的 Bootloader,以及获取 Android 的 Root 权限等。
然而,有些设备在执行这些操作时可能并不方便,甚至无法解锁或者 Root。
但俗话说得好,「办法总比困难多」。VirtualXposed 的出现,为这些设备带来了一丝曙光;开发者称,借助它,即使在没有 Root 权限的情况下,也可以使用 Xposed 框架!

它是如何实现的?体验怎样?使用时又会遇到什么问题?接下来的文章中,这些问题将会一一得到解答。
原理是什么?
首先,VirtualXposed 并未对系统底层进行任何修改,也没有利用什么奇怪的漏洞。
它的工作原理,有点像那些双开软件。你可以这么理解:它在你的手机里生成了一个「虚拟环境」,再在这个环境中启用 Xposed。一切都是虚拟的,这也是它叫做 VirtualXposed 的原因。
正因为此,你需要使用的 Xposed 框架与框架所对应的应用,都需要安装在这个虚拟环境中,才能起作用。
举个例子,如果你要在钉钉上应用某个虚拟位置的框架,你必须同时把二者都安装到 VirtualXposed 中。

只在 VirtualXposed 中安装框架,是不会对系统中的钉钉起任何作用的。同理,直接将框架安装在系统上,或是将应用和框架都安装在系统上,也都不会起任何作用。

了解了它的运行原理之后,接下来要说的,就是如何使用这款「神奇」的应用了。
安装应用&框架
初次打开 VirtualXposed(下文中或简称 VX)后,呈现在眼前的,是这个类似于 Android 启动器的界面。

不要怀疑,你并没有装错软件;还记得上面介绍的原理吗?这是一个「虚拟空间」。而这个启动器,就相当于「虚拟空间」的入口。
和 Pixel Launcher 一样,向上滑动就可以打开应用抽屉,安装到 VirtualXposed 的应用都会在其中显示;但一开始只有预先装好的 Xposed Installer:

如果一切正常,「虚拟环境」中的 Xposed 应该是已经启用的,打开后会显示「Xposed 框架已激活」……即使我的手机并没有解锁,以及获取 Root 权限。

有三种方法可以将应用与模块安装到 VirtualXposed 中。第一种,是「克隆应用」,即将已经安装在系统中的应用添加到 VirtualXposed。
回到 VX 的桌面,点击那个看上去像是应用抽屉的按钮,可以打开 VX 的设置选项:

选择「添加应用」,在已经安装到系统中的应用中进行勾选,确认后即可将它们「克隆」到 VX 的「虚拟环境」里。

如果想要添加并未安装的应用或模块,可以选择第二种方式;即在各种文件管理器中打开 .apk
安装包后,选择「安装到 VirtualXposed」:

另外,如果你已经将各种市场或是浏览器添加到了 VX 中,也可以直接通过这些渠道下载并安装应用。

当然,如果只是想安装模块,还可以直接通过内置的 Xposed Installer 搜索并安装:

添加到 VirtualXposed 中的应用,运行起来与安装到系统中的应用几乎无异;可以正常接收通知,以及浏览本机中的图片等文件。

除此之外,它还可以像「双开」软件一样,同时运行两个相同的应用,并在多任务中进行切换,甚至还可以分屏。从 VirtualXposed 中打开的应用,会加上 [Admin] 的前缀。

想要管理 VX 中的应用进程或是卸载应用,前往设置即可,直接在抽屉中长按图标也可以实现部分操作。

有趣的是,VX 中的启动器,本质上也的确是个 Pixel Launcher。如果愿意的话,你甚至还能在设置中更换图标包……
「万事俱备,只欠东风」。既然应用和模块都已经准备完毕,那么是时候试试看,它能不能正常使用那些框架了。
应用框架测试
接下来,就是「见证奇迹的时刻」。
从 VirtualXposed 官方网站上给出的支持模块列表中,我挑选了两款框架进行测试。其中一款名为 MDWechat,是一个能让微信界面 Material Design 化的模块。
参考阅读:用两款插件让微信更符合 Material Design 设计
激活模块的方式,与实机里的 Xposed 大致无异。打开 VX 中的 Xposed Installer,然后前往「模块」,就能看到安装好的模块了。

按道理来说,接下来的步骤应该是「勾选模块,然后重启手机」;然而在 VX 中,启用模块并不需要真的重启手机。只要在勾选模块后,前往设置,点击最下方的「重启」即可。「重启」的速度极快,因此作者还设置了一个「温馨」的 Toast 提醒……

完成这些操作后,再打开微信;令人兴奋的是,MDWechat 的确被成功激活了。

Material Design 版微信,看上去如何?
我又测试了另一个模块:应用变量,通过它可以分应用修改机型,从而显示各种不同的来源「小尾巴」。

它也可以成功地被激活,并对 VX 中的应用进行修改。现在,我也是用 Mate 9 保时捷设计发微博的人了!(笑)

当然,这些模块只会对 VX 里的应用生效。但的确,VirtualXposed 在一台既没有解锁,也没有 Root 的设备上,成功应用了 Xposed 框架模块。
如果嫌每次都要在 VX 的启动器中打开应用麻烦,可以长按图标,选择「创建快捷方式」,这个应用就出现在你的系统桌面上了,应用名会加上(VXP)的后缀。

插件出问题了,怎么办?不用担心,VX 并不会影响手机系统,如果真的出现了严重到无法正常使用的情况,直接卸载 VX 即可。
总结
目前的 VirtualXposed 还不甚完善。它尚未支持需要使用资源 Hook 的模块,对一部分模块的兼容性也尚待增强。
同时,它的工作原理,也决定了任何修改系统的 Xposed 模块均无法使用;但瑕不掩瑜,VirtualXposed 的确是个很有前途的项目。它大大降低了 Xposed 框架的使用门槛,让更多人能体验到各种花样百出的模块。
对于已经在系统中启用了 Xposed 的用户,还可以借助 VirtualXposed 方便地测试模块;既不用频繁重启手机,又毋需担心「翻车」后影响正常使用。
希望作者能进一步地完善这个项目,提升兼容性与稳定性,造福更多 Android 玩家。
想要了解更多详情,可以访问 VirtualXposed 的 GitHub 页面。
> 关注 少数派公众号,了解更多手机使用小技巧 💡