默認
即時通訊網 資訊 [動態] 微信底層調用方案Hardcoder已開源!
即時通訊網 首頁 資訊 查看內容
想開發IM:買成品怕坑?租第3方怕貴?找開源自已擼?盡量別走彎路了... 找站長給點建議

[動態] 微信底層調用方案Hardcoder已開源!

JackJiang · 1 個月前 | 閱讀(3149)· 評論(0) 轉發 收藏1

摘要 微信自用的安卓APP與系統間通信解決方案——Hardcoder已開源,該方案能讓微信的整體性能提升10%-30%。

1、Hardcoder 的誕生

隨著微信越來越復雜,性能優化變得越來越難做,優化所帶來的效果提升也越來越不明顯。所以我們⼀直在思考,該如何突破這個優化的極限?

直到有一次與廠商的交流我們了解到,部分廠商會針對微信做一些小改動,其中比較典型的就是“暴力提頻”。系統在識別到微信啟動,頁面切換等場景時,會粗暴地提高 CPU 頻率,從而提升 APP 運行的性能。

但由于廠商無法準確判斷微信場景,暴力提頻效果并不理想;而如果過多地提高 CPU 頻率,又對手機的功耗有影響。這一方案啟發了我們,我們何不跳出軟件的范疇,在手機硬件的層面上挖掘更多的性能優化空間呢?于是 Hardcoder 框架應運而生。

2、Hardcoder 是什么

廠商暴力提頻效果不理想是由于在目前 Android 框架下,手機沒有辦法準確獲知 APP 需要資源的時機。如果我們需要挖掘手機硬件層面的性能優化,就需要跳過 Android 操作系統的應用框架,在應用開發者和硬件之間打開一個通道,讓硬件可以直接根據應用開發者的需要進行資源的調度。

Hardcoder 構建了 APP 與系統(ROM)之間可靠的通信框架,突破了 APP 只能調用系統標準 API,無法直接調用系統底層硬件資源的問題,讓 Android APP 和系統能實時通信。

[動態] 微信底層調用方案Hardcoder已開源!


利用 Hardcoder,APP 能充分調度系統資源如 CPU 頻率,大小核,GPU 頻率等來提升 APP 性能,系統能夠從 APP 側獲取更多信息以便更合理提供各項系統資源。同時,對于 Android 缺乏標準接口實現的功能,APP 和系統間也可以通過該框架實現機型適配和功能拓展。

3、Hardcoder 框架通信流程

Hardcoder 框架分為 Server 端和 Client 端。其中 Server 端在廠商系統側實現,Client 端以 aar 形式合入到 APP中。

[動態] 微信底層調用方案Hardcoder已開源!


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已開源!


Hardcoder 通信框架有以下特點:
  • 1)系統服務為 optional,實現上可以完全支持或者部分支持;
  • 2)框架實現不依賴于特定 Android 系統,如 API level 限制;
  • 3)APP 的功能和業務特性不依賴于該框架。

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 接入指南
  • 1)下載 Hardcoder 工程編譯 aar;
  • 2)項目 build.gradle 引入 Hardcoder aar;
  • 3)進程啟動時調用 initHardCoder 建立 socket 連接(一般進程啟動時需要請求資源,因而推薦在進程啟動時調用)。每個進程都是獨立的,都需要調用 initHardCoder 建立 socket 連接,建立連接后每個進程維持一個 socket,進程退出時 socket 也會斷開;
  • 4)initHardCoder 回調成功后調用 checkPermission,傳入 APP 已申請的各個廠商鑒權值;
  • 5)在需要請求資源的場景調用 startPerformance,傳入請求資源的參數。若場景位于進程啟動階段,比如 APP 啟動,需要在 initHardCoder 的回調成功以后再調用 startPerformance,確保連接已成功建立,或者判斷 HardCoderJNI 的 isConnect() 檢查 socket 是否已連接。
  • 6)場景結束時主動調用 stopPerformance,傳入對應場景 startPerformance 時的返回值 hashCode 作為參數,停止本次請求。
  • 7)測試性能,APP 可對打開/關閉 Hardcoder 的情況做對比實驗,測試性能是否有提升。
四、向廠商申請線上權限,具體請見常見問題

五、發布帶 Hardcoder 功能的 APP。

附錄: github的wiki 文檔鏈接


即時通訊網 - 即時通訊開發者社區! 來源: - 即時通訊開發者社區!

相關閱讀

最新評論

即時通訊方案hot[淘寶下單]

返回頂部
曾氏料二肖中特