覆盖 4.6 亿+设备量!腾讯开源的 Hardcoder 框架是如何提升 Android APP 性能的?

发布于:2019 年 10 月 30 日 15:13

覆盖4.6亿+设备量!腾讯开源的Hardcoder框架是如何提升Android APP性能的?

Hardcoder 的诞生

随着微信越来越复杂,性能优化变得越来越难做,优化所带来的效果提升也越来越不明显。所以我们一直在思考,该如何突破这个优化的极限?

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

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

Hardcoder 是什么?

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

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

覆盖4.6亿+设备量!腾讯开源的Hardcoder框架是如何提升Android APP性能的?

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

Hardcoder 框架通信流程

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

覆盖4.6亿+设备量!腾讯开源的Hardcoder框架是如何提升Android APP性能的?

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 端之间的通信方式。

覆盖4.6亿+设备量!腾讯开源的Hardcoder框架是如何提升Android APP性能的?

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 框架的价值,解决大家在性能优化和机型适配上的烦恼。

本文转载自公众号云加社区(ID:QcloudCommunity)。

原文链接:

https://mp.weixin.qq.com/s/k9M96Bktk7Hf29lmosxtnQ

阅读数:466 发布于:2019 年 10 月 30 日 15:13

更多 文化 & 方法、Web框架、Android 相关课程,可下载【 极客时间 】App 免费领取 >

评论

发布
暂无评论
  • Android 开发周报:Android 7.0 新特性汇总、美团热更新方案解析

    安卓6.0仍在稳步上升中,安卓7.0正式版由于刚刚发布,因此份额微乎其微。本期周报为大家带来了资源热修复、Android N新特性分析、列车飞驰动画实现等技术干货,欢迎阅读。

    2016 年 9 月 20 日

  • 京东 618:ReactNative 框架在京东无线端的实践

    React Native最近两三年之内整个框架在业界应该说是非常热门,很多团队、大公司都在做RN的一些研究开发工作。先一起回想下在React Native框架出现之前,互联网APP开发是一种什么样的模式。最初,大多数同学应该是用原生开发Android或者iOS,再加上HTML5内嵌的方式,即Web APP。之后又衍生出了Hybrid APP,基于PhoneGap/Cordova框架实现了WebView的能力强化。不知道大家在做这种开发的时候,有没有遇到过一些瓶颈或者一些痛点,反正我们的团队是遇到了很多。这里总结一下之前传统的方式有哪些问题。

    2017 年 6 月 17 日

  • Flutter 在贝壳的接入实践

    2019 年 7 月 24 日

  • MDC Android 专场:账户同步备份框架与 Web&Native 混合开发

    8月25-26日,首届MDC @移动开发者大会 在京召开,此次大会吸引了来自iOS、Android以及Windows Phone领域的开发和实践者参与,在Android分论坛上,点心架构师 @点心梁泉 、盛大乐众ROM架构师 @郭振-子易 、58同城客户端项目负责人张炎、点心架构师唐才林、豌豆荚百宝袋项目技术负责人高雄以及优酷高级开发工程师严佳分别到场做了主题演讲。本文结合活动实况及嘉宾演讲幻灯片对本次活动进行总结,希望能够让读者对本次活动以及移动开发有更全面的了解。

    2012 年 9 月 1 日

  • 网络优化(上):移动开发工程师必备的网络优化知识

    今天我们就再接再厉,继续学习系统中另外一种常见的I/O——网络I/O。

    2019 年 1 月 17 日

  • Android 开发周报:谷歌发布 50 美元手机、Dexposed 框架使用详解

    谷歌将要发布的Android One手机定价才50美元,这或许会给千元机带来一定的冲击。苹果发布招聘安卓开发人员的启事,不知葫芦里卖的是什么药。Dexposed是阿里开源的一款成熟的AOP框架,本期周报详解了Dexposed的运行原理及使用方法,同时还给大家带来了Android上玩Hook、LayoutCast、RatioLayout等多篇优秀教程和开源项目。

    2015 年 8 月 10 日

  • Android 开发周报:Android 相机开发、内存泄漏总结

    国外的研究结果表明:每20部Android手机中就有1部被root,90%的Android手机都处于危险状态。本期周报带来了QQ空间团队推出的精品文章——《Android相机开发那些坑》以及内存泄漏、Apk瘦身方面的知识。

    2016 年 2 月 2 日

  • Android 开发周报:Android Studio 2.3 发布、Android Hook 技术解析

    Android Studio 2.3正式版已经发布,数据研究机构赛诺发布了2017年1月中国智能手机市场报告,其中OPPO和vivo夺得冠亚军的头衔。本期周报为大家带来了App启动分析、Hook技术、安全防范等技术干货,还有数据库调试工具、vlayout UI框架等优秀开源项目推荐。欢迎阅读。

    2017 年 3 月 8 日

  • UI 优化(下):如何优化 UI 渲染?

    如何让我们的UI渲染达到60 fps?有哪些方法可以帮助我们优化UI渲染性能?

    2019 年 2 月 7 日

  • APNs:聊一聊第三方系统级消息通道的事

    如何在App关闭或网络功能受限的情况下,仍然成功发送消息到接收人设备呢?

    2019 年 10 月 2 日