愛奇藝插件化之Neptune

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

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

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

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

插件包體積越大,下載成功率和轉化率越低,爲了提升插件升級的覆蓋率和成功率,咱們採用了增量更新的機制。插件後臺更新插件時,後臺會基於歷史版本插件生成增量的diff包。APP端在請求插件數據時,後端接口額外返回增量patch的url及生成patch全部的base插件版本。前端根據本地已安裝插件的版本,選擇使用patch增量合成新版本插件apk仍是走全量下載新插件,優化網絡下載流量。緩存

原文來自:https://www.linuxprobe.com/iqiyi-plug-neptune.html網絡

相關文章
相關標籤/搜索