太极新版本,流畅、稳定
很久以前就有小伙伴反馈,太极在 Android 12 系统上非常不好用,经常出现闪退、App 无响应等问题。那时候我在直播的时候回应过:「短时间内不会修复这个问题,如果要修复的话,我会重写一遍太极」
可能有人无法理解,为什么修复这么一个稳定性问题,需要重写太极呢,这真的有必要吗?
事实上,太极的核心部分来源于我于五年前在 github 开源的 epic 框架,借助 epic,我们可以免 ROOT 实现 ART 中 Java 方法的 hook,有了它各种虚拟框架才成为可能;在 epic 之后,陆陆续续出现了很多类似的框架,其原理都大同小异。然而,epic 诞生的时代,是 Android 系统刚刚从 dalvik 虚拟机切换到 ART 运行时,在那个年代,Java 方法的 提前编译(AOT)、解释执行、即时编译(JIT)还有会影响 Java 方法执行的垃圾回收(GC)都处于非常初级的阶段,可以认为是在探索和试错;在这么几年里,ART 获得了飞速的发展,现在的 ART 已经与 5.0 时代不可同日而语了。
因此,为 Android 5.0 - 6.0 系统设计的 epic,在现代的 Android 系统上运行起来已经水土不服了;如果把 ART 比作一条奔腾向前的河流,那 epic 就相当于在其某个部分造了一条人工运河,随着 Android 系统的迭代和演进,ART 这条河流发生了多次改道,而为了保证 epic 这条运河的持续运作,我们需要不停地在 ART 上开凿,凿得越多,可能出现的问题就越大;如同我们的母亲河黄河一样,如果她入海口从渤海改道为东海,很多支流就会干涸,epic 也是一样。
从 Android 5.0 到即将发布的 Android 13,这其中跨越了太多的版本;每次新版 Android 系统发布,epic 就会在上面打补丁,贴狗皮膏药,久而久之就会漏洞百出;这就是最近一年多太极各种问题的根源。
最近这段时间,我重新翻阅了一遍 ART 的源码,尝试着去理解现代 ART 的实现思路,然后以一种顺应当前 ART 运行方式的思路去重新实现 epic,在经过若干次失败之后,终于获得了一点小小的成果。这两天可能大家感觉奇怪,为啥最近更新这么频繁?因为,太极的核心,在 Android 12 上,已经与之前完全不同了;我需要不停地调整,才能得到一个相对满意的结果。
经过几天的迭代和测试,现在的版本已经基本符合预期了。在 Android 12 系统上,其稳定性和流畅度有了质的飞跃。感兴趣的小伙伴们可以自行尝试,老规矩,公众号回复:最新版 即可获得下载链接。
顺便一提,Android 12 上,优化和取消优化这两个功能已经彻底失效;我新加了一个“重新安装”,如果大家升级到最新的太极版本后某些功能不正常,可以尝试下“重新安装”。
最后,大家周末愉快~