覆盖4.6亿+设备量,腾讯Hardcoder框架正式开源

Hardcoder 的诞生git

随着微信愈来愈复杂,性能优化变得愈来愈难作,优化所带来的效果提高也愈来愈不明显。因此咱们一直在思考,该如何突破这个优化的极限?github

直到有一次与厂商的交流咱们了解到,部分厂商会针对微信作一些小改动,其中比较典型的就是“暴力提频”。系统在识别到微信启动,页面切换等场景时,会粗暴地提升 CPU 频率,从而提高 APP 运行的性能。小程序

但因为厂商没法准确判断微信场景,暴力提频效果并不理想;而若是过多地提升 CPU 频率,又对手机的功耗有影响。这一方案启发了咱们,咱们何不跳出软件的范畴,在手机硬件的层面上挖掘更多的性能优化空间呢?因而 Hardcoder 框架应运而生。性能优化

Hardcoder 是什么微信

厂商暴力提频效果不理想是因为在目前 Android 框架下,手机没有办法准确获知 APP 须要资源的时机。若是咱们须要挖掘手机硬件层面的性能优化,就须要跳过 Android 操做系统的应用框架,在应用开发者和硬件之间打开一个通道,让硬件能够直接根据应用开发者的须要进行资源的调度。
框架

Hardcoder 构建了 APP 与系统(ROM)之间可靠的通讯框架,突破了 APP 只能调用系统标准 API,没法直接调用系统底层硬件资源的问题,让 Android APP 和系统能实时通讯。socket

利用 Hardcoder,APP 能充分调度系统资源如 CPU 频率,大小核,GPU 频率等来提高 APP 性能,系统可以从 APP 侧获取更多信息以便更合理提供各项系统资源。同时,对于 Android 缺少标准接口实现的功能,APP 和系统间也能够经过该框架实现机型适配和功能拓展。性能

Hardcoder 框架通讯流程优化

Hardcoder 框架分为 Server 端和 Client 端。其中 Server 端在厂商系统侧实现,Client 端以 aar 形式合入到 APP中。spa

 

APP 在须要资源的时候,向 Hardcoder 的 Client 端发出请求。Hardcoder Client 端接收到请求后向 Hardcoder Server 端发出请求。Server 端接受到请求后会根据请求参数向硬件申请不一样的资源,好比调整 CPU 频率,把线程绑定到大核运行等,实现了 APP 到系统的通讯。

同时系统也可把当前系统的状态经过 Hardcoder Client 在 Server 端注册的接口回调通知到 Client 端,从而 APP 能够获取到系统状态,实现系统到 APP 的通讯。

Hardcoder Client 端与 Server 端采用的是 LocalSocket 的通讯方式,因为 Hardcoder 采用 Native 实现,于是在 C 层使用 Linux 的 socket 接口实现了一套 LocalSocket 机制做为 Client 端与 Server 端之间的通讯方式。

Hardcoder 通讯框架特色

  • 系统服务为 optional,实现上能够彻底支持或者部分支持

  • 框架实现不依赖于特定 Android 系统,如 API level 限制

  • APP 的功能和业务特性不依赖于该框架

Hardcoder 适用场景

Hardcoder 框架有效提高了微信启动、发送视频、小程序启动等重度场景的速度,朋友圈的滑动流畅性也明显提高,平均优化效果达 10%-30%。

此外,因为微信做为主动请求方能够在场景资源把控上作得更精细和准确,Hardcoder 在性能获得提高的同时仅增长了 2% 的电量消耗,至关于用 2% 的功耗换取平均 20% 的性能提高。

Hardcoder 框架目前已接入 OPPO、vivo、华为、小米、三星、魅族等主流手机厂商,覆盖 4.6亿设备量。

Hardcoder 开源

从微信技术开放共享的理念出发,咱们在腾讯内部进行了 Hardcoder 框架的宣传和推广,包括手机 QQ、企业微信,每天快报等多个应用团队接入。其中手机 QQ 接入 Hardcoder 后,在启动、打开聊天界面、发送图片等场景的平均优化效果达 10%-50%。

腾讯现将 Hardcoder 框架开源,让更多 Android 开发者享受到 Hardcoder 框架的价值,解决你们在性能优化和机型适配上的烦恼。

Hardcoder正式开源

Github 开源地址:

https://github.com/Tencent/Hardcoder

(点击文末阅读原文直接访问)

请给 Hardcoder 一个 Star !

欢迎提出你的 issue 和 PR!

Hardcoder 国内镜像地址:https://git.code.tencent.com/Tencent_Open_Source/Hardcoder

(登陆后才能访问公开项目)

腾讯工蜂源码系统为开源开发者提供完整、最新的腾讯开源项目国内镜像