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