當前位置:
首頁 > 知識 > 愛奇藝插件化之Neptune

愛奇藝插件化之Neptune

愛奇藝APP從2013年就開始了插件化技術的研究和改造,截止目前一共有20多個獨立業務模塊以插件化的方式運行和並行迭代,其中包括APP首頁的奇秀、文學、電影票、漫畫等業務。開發插件化框架的Demo並不是很難,但是要開發一款完善的插件化框架,兼容適配國產各種碎片化的ROM,同時滿足業務需求,卻不是那麼容易。插件框架的穩定性和兼容性,從原有代碼模塊解耦到插件化的遷移成本、後期維護成本等方面都需要考慮到。本文將介紹插件化實現的技術原理,分享愛奇藝APP在插件化實踐過程的解決方案。

Neptune是愛奇藝移動端研發的一套靈活,穩定,輕量級的插件化解決方案。經過不斷的研發,迭代和線上驗證,目前已經完全適配了Android P,能夠在數億的設備上動態載入和運行插件APK,為愛奇藝眾多的垂直業務團隊提供了穩定的服務。

愛奇藝插件化之Neptune

在Neptune框架之上,愛奇藝APP針對插件業務,實現了一套完備的插件管理方案,負責插件的下載,安裝,升級,版本管理,插件啟動控制,插件與宿主之間的通信。由於這部分涉及具體APP業務的交互形態,且與後端數據結構關聯,因此沒有開源。

這裡簡單介紹下設計思路。對於每一個插件版本數據,在APP層是一個OnLineInstance實例,裡面欄位與後端數據結構保持一致,包含基本的插件包名,插件版本,插件依賴,還包含一些下載控制策略,patch升級策略等。APP層的OnLineInstance,對應於Neptune框架的PluginLiteInfo。由於一些插件可能會來自不同的地方或者配置不同的版本,如內置插件,本地緩存的舊版本插件,線上最新插件。因此在APP層一個插件業務會關聯多個OnLineInstance,我們會選擇最高版本的兼容插件進行升級,安裝。

插件包體積越大,下載成功率和轉化率越低,為了提高插件升級的覆蓋率和成功率,我們採用了增量更新的機制。插件後台更新插件時,後台會基於歷史版本插件生成增量的diff包。APP端在請求插件數據時,後端介面額外返回增量patch的url及生成patch所有的base插件版本。前端根據本地已安裝插件的版本,選擇使用patch增量合成新版本插件apk還是走全量下載新插件,優化網路下載流量。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

SQL_Server2000示例資料庫NorthWind的分析(轉)

TAG:程序員小新人學習 |