1、Hardcoder 的誕生隨著微信越來越復雜,性能優化變得越來越難做,優化所帶來的效果提升也越來越不明顯。所以我們⼀直在思考,該如何突破這個優化的極限? 直到有一次與廠商的交流我們了解到,部分廠商會針對微信做一些小改動,其中比較典型的就是“暴力提頻”。系統在識別到微信啟動,頁面切換等場景時,會粗暴地提高 CPU 頻率,從而提升 APP 運行的性能。 但由于廠商無法準確判斷微信場景,暴力提頻效果并不理想;而如果過多地提高 CPU 頻率,又對手機的功耗有影響。這一方案啟發了我們,我們何不跳出軟件的范疇,在手機硬件的層面上挖掘更多的性能優化空間呢?于是 Hardcoder 框架應運而生。 2、Hardcoder 是什么廠商暴力提頻效果不理想是由于在目前 Android 框架下,手機沒有辦法準確獲知 APP 需要資源的時機。如果我們需要挖掘手機硬件層面的性能優化,就需要跳過 Android 操作系統的應用框架,在應用開發者和硬件之間打開一個通道,讓硬件可以直接根據應用開發者的需要進行資源的調度。 Hardcoder 構建了 APP 與系統(ROM)之間可靠的通信框架,突破了 APP 只能調用系統標準 API,無法直接調用系統底層硬件資源的問題,讓 Android APP 和系統能實時通信。 利用 Hardcoder,APP 能充分調度系統資源如 CPU 頻率,大小核,GPU 頻率等來提升 APP 性能,系統能夠從 APP 側獲取更多信息以便更合理提供各項系統資源。同時,對于 Android 缺乏標準接口實現的功能,APP 和系統間也可以通過該框架實現機型適配和功能拓展。 3、Hardcoder 框架通信流程Hardcoder 框架分為 Server 端和 Client 端。其中 Server 端在廠商系統側實現,Client 端以 aar 形式合入到 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 端之間的通信方式。 Hardcoder 通信框架有以下特點:
4、Hardcoder 適用場景和效果Hardcoder 框架有效提升了微信啟動、發送視頻、小程序啟動等重度場景的速度,朋友圈的滑動流暢性也明顯提升,平均優化效果達 10%-30%。 此外,由于微信作為主動請求方可以在場景資源把控上做得更精細和準確,Hardcoder 在性能得到提升的同時僅增加了 2% 的電量消耗,相當于用 2% 的功耗換取平均 20% 的性能提升。 Hardcoder 框架目前已接入 OPPO、vivo、華為、小米、三星、魅族等主流手機廠商,覆蓋 4.6 億+ 設備量。 5、Hardcoder 開源從微信技術開放共享的理念出發,我們在騰訊內部進行了 Hardcoder 框架的宣傳和推廣,包括手機 QQ、企業微信、天天快報等多個應用團隊接入。其中手機 QQ 接入 Hardcoder 后,在啟動、打開聊天界面、發送圖片等場景的平均優化效果達 10%-50%。 我們現將 Hardcoder 框架開源,讓更多 Android 開發者享受到 Hardcoder 框架的價值,解決大家在性能優化和機型適配上的煩惱。 歡迎大家查閱 github 網址:http://github.com/Tencent/Hardcoder.git 6、如何使用 Hardcoder一、通過 Hardcoder 技術方案介紹,了解 Hardcoder 實現原理以及框架; 二、使用工程自帶 testapp 快速使用 Hardcoder 并驗證效果,具體請見 Hardcoder Testapp 測試指南; 三、APP 接入 Hardcoder,具體請參見 Hardcoder 接入指南:
四、向廠商申請線上權限,具體請見常見問題; 五、發布帶 Hardcoder 功能的 APP。 附錄: github的wiki 文檔鏈接Hardcoder產品方案介紹:https://github.com/Tencent/Hardcoder/wiki/Hardcoder-產品方案介紹 Hardcoder 技術方案介紹:https://github.com/Tencent/Hardcoder/wiki/Hardcoder-技術方案介紹 Hardcoder testapp 測試指南:https://github.com/Tencent/Hardcoder/wiki/Hardcoder-Testapp測試指南 Hardcoder 接入指南:https://github.com/Tencent/Hardcoder/wiki/Hardcoder-接入指南 |
|