把微信难以发现的实用功能找出来,用户也能获得更好的使用体验。
大多数情况下,只是对某个功能做个体验,并告诉大伙这能搞出什么新玩法。而今天小雷打算来点硬货,整点深入的微信隐藏功能解析。
这个功能涉及到微信底层,也许不是每个人都愿意折腾。
微信更新到现在,安装包早已突破200MB,内存占用和性能消耗都在不断提高。除了新功能的加入,更重要的原因是底层代码和框架也在不断增加。而对微信,甚至是系统流畅度影响最大的,还得看这个叫做Hardcoder的通信框架。估计大家用了那么多年微信,还是第一次见这玩意儿吧。
So,小雷先和大家聊聊,这个Hardcoder通信框架到底是啥玩意、是用来干嘛的。
Hardcoder框架由腾讯开发,并在2019年全面开源。实际上也是在几年前就被应用到微信底层了,只是日常使用中很难被发现。按开源文档的说法嘛,它是为了优化微信性能而诞生的。
其实很好理解,各大手机厂商都对系统有自己的一套性能调度。
比如MIUI是出了名的调度激进,玩游戏时发热明显,OV则相对保守,限制帧率来控制温度。系统识别到微信启动或切换页面时,就会瞬间提高CPU频率,从而提高微信的流畅度。但随着微信不断迭代,功能也越来越复杂,小程序、聊天、公众号、相册等都是单独的界面。
腾讯觉得,只靠系统那一套调度,已经不能满足微信对流畅度的需求了。
大家可以看下图,传统的系统调度方案是先由App发出获取性能的需求。这个需求被安卓系统框架接收后,就会给予这个App合适的性能调度。但有了Hardcoder框架后,微信就不用再看系统调度的脸色了,它为所欲为,可以随意调用系统性能资源。比如从主界面进入聊天界面时,拉高CPU频率,甚至把微信某些线程挪到CPU超大核里面运行,
既然能做到绕过系统调度,Hardcoder肯定也需要手机厂商配合的。
喏,就是把服务端放进国内的系统定制UI(MIUI、Flyme等)。
再把客户端放进微信里,这样微信就可以绕过系统那套调度。用“私人搭建”的Hardcoder框架来调用CPU和GPU的性能资源。
说人话就是微信跟国内某些定制ROM搞了合作,让系统给微信开了调度白名单。目前Hadrcoder框架已经接入了OPPO、vivo、华为、小米、三星和魅族等主流手机厂商。
那么问题来了,Hardcoder对我们,到底是好还是坏呢?以开源文档来看,肯定是好处多多了,既能提高微信各种场景的流畅度,又不会导致功耗大幅提升。官方甚至表示,相当于只用2%的功耗换取平均20%的性能提升,效率高得离谱。
微信流畅是流畅,但到底省不省电,相信各位心里都有数的,只能说中规中矩。即使Hardcoder已经专门对不同的机型做调度适配,但总会有适配得不够到位的地方。比如小雷明明用的是旗舰手机,几个中核就可以带起来微信,Hardcoder硬是要把微信放在大核上运行,徒增功耗。
Hardcoder虽然可以让微信的流畅度得到保证,但毫无疑问是提升牺牲发热和功耗。
另一方面,Hardcoder框架只能实现微信与系统之间的沟通。
它不知道整个手机目前处于啥状态,在某些场景下会导致手机耗电更加严重。比如手机电量不足时,基本上都会自动开启省电模式,此时手机CPU会以低功耗模式运行。但由于微信不知道整个系统的情况,它只会不断给系统提要求:
带来的问题就是省电模式一点都不省电,用户甚至会以为是系统出了问题。
好比小雷的手机CPU还在躺着睡觉,突然被Hardcoder半夜敲门,你说CPU气不气,累不累?
像骁龙888这种发热严重点的,一生气就得飙到四五十度,这谁顶得住啊。
Hardcoder为每台配置了服务端的机子都进行了统一适配,但默认的配置并不一定适合自己的手机。如果大家想让微信变得更省电流畅,不妨跟着小雷一起调教Hardcoder。支持的机型列表就放在这儿了,基本覆盖了主流厂商,大伙自己看着来。
毕竟Hardcoder是底层框架,无法直接打开,我们得靠这个App来创建快捷方式使用。
在创建快捷方式App里找到微信,进入微信的【活动列表】搜索“hard”,就能看到Hardcoder框架的快捷方式。
此时我们点击右上角的【创建】按钮,Hardcoder的快捷方式会在系统桌面上出现。
注意喽,如果点击【创建】后没发现桌面有动静,很有可能是没有给【创建快捷方式】权限。
创建好快捷方式后,我们就可以在桌面打开微信Hardcoder框架啦。
没有意外,Hardcoder果然是一大串英文,让人看得头痛欲裂。但大家无须担心,凡是能用上的选项,小雷都会帮大家做个注释。先看顶部部分,第一个选项是Hardcoder的总开关。个人觉得,手机处理器性能不低于骁龙855的机型都可以关掉,让系统调度接管Hardcoder就好。而DEBUG_LOG是日志功能,不关闭会经常产生日志,有可能影响系统流畅。
开头打勾的是提频的触发条件,而CPU和IO则是提频的幅度。等级越高说明频率越小,0表示提频幅度最大,3表示提频幅度最小,与我们的认知刚好相反。至于Bind THR,如果勾选了,微信对应的线程就会优先以大核心运行以提高流畅度。手握888机型的机友们,要是没特别需求,最好不要勾选Bind THR。
毕竟骁龙888的X1超大核功耗很高,对性能提升还不大,能不用就不用。
比如小雷勾选了BOOT,微信就会在启动时提高频,加快微信启动。
勾选了SEND_PIC_MSG,微信就会在发送图片时提频,保证发送图片不卡顿。
其实在小雷看来,除了涉及解码/编码的线程,其他线程都可以按需调低提频幅度,甚至彻底关闭提频。以上的图像注释都表达得很明确,懂点搞机知识的小伙伴可以自行调教。要是实在懒得研究,又让手机省电一点,直接把Hardcoder关掉即可。让系统来接管微信调度,绝对不会出问题(前提是处理器性能够强)提醒一下小伙伴们,修改前最好截个图,不然你想改回去也没有备份作为参照了。至于Hardcoder框架是好是坏,小雷作为普通用户不太好评价。原因很简单,万一Hardcoder被滥用了,后果将十分严重。当所有App都接入Hardcoder并抢着占用CPU大核线程时,手机将会持续发热,长期处于高负载状态。
虽然它有自己的优势,可以直接根据App的需要进行资源调度,提高App流畅度。但小雷依然不希望Hardcoder接入到其他App,从目前的安卓生态来看,被滥用的可能性还是挺高的。一旦被大规模滥用,就算把地表最强A14芯片挪到安卓上,也喂不饱那些流氓App。
图片&资料来源:酷安@hana_shirosaki