打造手淘极简包的轻量化框架
作者:周松(北傲)
如今app冗余與包大小一直都是很多業(yè)務揮之不去的優(yōu)化項。行業(yè)內(nèi)很多極簡包如雨后春筍般冒出來。又或者是很多業(yè)務對極簡包的探索也有積極的嘗試。
極簡包帶來的價值,不僅是包大小上的質(zhì)變,更是用戶下載轉(zhuǎn)化率和投放帶來的正向效應,線下下沉市場的開辟具有重要價值,對拉新轉(zhuǎn)化率影響很大。
一般極簡包會有兩種方案:
1、作為一個套殼App,套了一層H5。主要鏈路由前端去打通交易流程,然后通過更新方案引導用戶升級;
2、作為一個套殼App,套了一層H5。主要鏈路由前端去打通交易流程,然后通過插件化的形式去動態(tài)更新Native版本的app。
無論采用上述哪種方式,作為H5的載體,只使用原生的web去打開頁面體驗感仍不是很好。同時還會伴有各種H5的適配聯(lián)調(diào)和優(yōu)化。而對于H5比較龐大的業(yè)務,如手淘,很多頁面前端去適配有極大的工作量,投入產(chǎn)出比不高。
故手淘極簡包提供第三種方案:
3、主頁由多個TAB實現(xiàn),可以Native或者H5,由業(yè)務自己去選擇,詳情頁通過H5去加載。后期升級鏈路是傳統(tǒng)Apk更新或者插件化由業(yè)務方自己去選擇。
由此手淘極簡包項目分離了一個可以快速搭建極簡App的框架。可供作為基礎腳手架,快速搭建出自己業(yè)務的極簡版App。
MTAS
Mini TaoBao Application Scaffold
MTAS是手淘極簡版應用腳手架,是基于快速搭建極簡包項目的App框架。
如今手機淘寶極簡版采用此極簡包基礎框架,包大小4M+。
基礎架構思維導圖
極簡基礎框架從結構上主要分為幾個部分:
極簡基礎服務
極簡基礎庫 -- 主要集成集團的基礎依賴,比如:網(wǎng)絡、容器、登錄等。都是經(jīng)過裁剪或重構過的精簡版,相較于原版冗余復雜功能多,精簡版的基礎依賴輕量簡單功能少。只要需要的基礎功能,不去額外增加包大小的負擔。
統(tǒng)一api層 -- 要想快速搭建一個輕量的app,基礎的功能封裝不能少,在這個模塊中,統(tǒng)一實現(xiàn)常用的功能,若是業(yè)務接入,不需要重復造輪子。只需要簡單調(diào)用即可。
極簡外圍容器
極簡外圍容器由mini-網(wǎng)頁容器sdk作為載體,外圍實現(xiàn)極簡版的相關統(tǒng)一攔截導航。支持登錄、back、跳轉(zhuǎn)、外鏈拉起、降級等功能。啟用多webview方案代替原生webview的緩存前進后退等策略,使頁面過渡更加流暢。進入前后級更加快速,交互更好。內(nèi)置緩存冷啟及首次啟動達到秒開級別,提升用戶體驗。
極簡升級鏈路
可以同時支持插件化下載、安裝、切換。也可以支持傳統(tǒng)的應用apk下載、安裝、升級。通過流式調(diào)用控制下載相關的操作,調(diào)用方可以自定義下載流來做自己想做的事情,例如一些流前檢查,流后處理,開關控制等等。
極簡業(yè)務組件
搭建一個簡版首頁的基礎視圖組件、常用的下拉刷新、上拉加載組件、裁剪過的recyclerView等等組件,可以支持搭建簡單的首頁。
詳細設計
極簡包基礎框架自下而上,從基礎依賴到上層業(yè)務,一層層做解耦和分離。
業(yè)務可以調(diào)用基礎功能,也可以自行擴展功能。比較靈活。
極簡包定義一套輕量化方案,核心解決以下三類問題:
1、 包大小:通過輕量基礎服務,以及Native + H5業(yè)務形態(tài)縮減包體大小至4M+;
2、升級轉(zhuǎn)化:插件化底座實現(xiàn)靜默更新,插件靜默更新 + 兜底APK更新 + 應用市場自動更新,整體提升升級率;
3、端內(nèi)體驗:
-
- Native化核心頁面、H5預渲染、H5詳情極速版提升核心鏈路加載體驗
- 登錄,保障包體大小前提下,支持支付寶登錄、手機號一鍵登錄&驗證碼登錄、首頁強引導。
極簡版架構設計
極簡基礎服務
1 極簡基礎庫
主要集成集團的基礎依賴。都是經(jīng)過裁剪或重構過的精簡版,相較于原版冗余復雜功能多,精簡版的基礎依賴輕量簡單功能少。只要需要的基礎功能,不去額外增加包大小的負擔。
以下介紹幾個主要的裁剪基礎庫:
網(wǎng)頁容器sdk裁剪對比圖
mini-網(wǎng)頁容器sdk,是一個可擴展的 Hybrid 應用解決方案,為客戶端內(nèi)的 Web 頁面提供了強大、易用的 WebView 容器。輕量且易用,目前只有500kb,不依賴UC內(nèi)核,做到小而簡。
圖片庫sdk裁剪對比圖
mini-圖片庫sdk,精簡無線圖片庫sdk是阿里巴巴Android端集圖像加載、顯示、處理、監(jiān)控于一體的一站式解決方案。覆蓋業(yè)內(nèi)主流圖片庫核心特性,同時因地制宜結合集團CDN圖片處理規(guī)則,旨在更有效地節(jié)省流量、更優(yōu)越的內(nèi)存占用、更極致的性能優(yōu)化、更流暢的加載體驗。簡化線程調(diào)度框架,減少圖片格式支持,輕量圖片降級方案,保留基礎功能,對模塊合并,代碼優(yōu)化,收縮一些負責功能。
網(wǎng)關sdk裁剪對比圖
mini-網(wǎng)關sdk ,精簡API網(wǎng)關平臺,為客戶端、H5和服務端提供統(tǒng)一、快捷、可靠的API接入以及監(jiān)控報表服務。保留安全框架的能力,保障移動平臺應用完整性、應用執(zhí)行環(huán)境可信性、數(shù)據(jù)機密性。原生網(wǎng)絡庫減小包大小。提供plugin供前端調(diào)用。
mini-數(shù)據(jù)采集sdk,一套面向客戶端開發(fā)的目前集團內(nèi)覆蓋app最多的數(shù)據(jù)采集SDK,具有數(shù)據(jù)安全級別高、數(shù)據(jù)到達率高、傳輸流量小等特點。優(yōu)化代碼做裁剪,去網(wǎng)絡底層sdk依賴。
mini-登錄sdk,統(tǒng)一登錄SDK為淘系APP打造一致的賬戶體驗,并且與安全深度集成,提供一致的安全水位。
代碼裁剪,突出一鍵登錄及sso登錄,提高登錄效率。縮減鏈路長的登錄。
極簡包依賴大小對比圖
極簡包基礎依賴裁剪過后,正向收益是十分明顯的,有效的降低了包大小,去除不必要的依賴和功能。使應用達到輕量化和簡潔化。負向影響也可以預料,功能多樣性降低,可供的選擇減少。
統(tǒng)一api層
極簡包基礎框架中做了一套統(tǒng)一基礎實現(xiàn)。集成常用的工具類,對功能的使用也做了封裝。
基礎實現(xiàn)包類展示
每個包的劃分使職責明確。使用方可以直接用里面的各種方法。也可以自己自定義需要的功能,或者實現(xiàn)接口擴展想要的能力。
極簡外圍容器
容器外圍承接了業(yè)務的基礎功能,保證正常的H5流程及安全相關的支持。同時也可以自定義實現(xiàn)業(yè)務方自己的擴展。
攔截導航
路由攔截導航主要分為兩個部分:替換器(Replace)和攔截器(Filter)。攔截器主要負責攔截并且做一些安全性的校驗以及處理;替換器主要處理業(yè)務上通用的功能,方便調(diào)試測試的功能等等。
多WebView方案
為提升用戶體驗,極簡包采用多WebView方案,對h5頁面的前進、后退進行了優(yōu)化,即在前進時打開一個新WebView進行頁面加載,回退時可以立刻隱藏WebView實現(xiàn)秒退。
多WebView設計
極簡升級鏈路
極簡框架中的下載鏈路,可以根據(jù)策略模式自行選擇,根據(jù)前置條件的分配和設置,業(yè)務層主導如何執(zhí)行策略。目前升級鏈路內(nèi)置Apk更新和插件更新,使用者也可以自定義流水線去包裝成另一個策略實現(xiàn)更新。
插件包或者主線Apk包發(fā)布可以在與極簡包解耦,互相的發(fā)布不受影響,不互相阻塞,可以提前測試,線上提前部署。
升級鏈路
應用升級
極簡下載更新流程的架構方式主要通過流式調(diào)用來做階段化推進。其中應用升級的流如下:
應用升級流水線
這個整個流水線也可以自己去定義。
插件升級
在插件化下載更新架構中,線上插件編譯好之后,端上通過下載、安裝、加載來做到切換到主包。
同時涵蓋安全模式,如果插件包有異常,可以通過安全模式回滾至原來的極簡包。
插件升級流水線&鏈路
安全模式
區(qū)別與傳統(tǒng)的Apk升級,插件化升級的方式更加靈活、便捷、可配置。但是插件化也可能會遇到一些機型和新系統(tǒng)兼容性、穩(wěn)定性的挑戰(zhàn)。這時候極簡基礎框架就有一個安全模式作為有力的保障,在遇到一些不可預料的場景,多次錯誤的情況,這個后盾就可以作為兜底,在錯誤態(tài)的情況下還原或復原應用的正常使用態(tài)。
安全模式提供基礎的安全校驗,在載入插件之前,檢驗插件是否合法、是否安全、文件是否損壞等等,先行判斷。也可以通過策略配置,去動態(tài)的控制是否需要加載插件。在保障體系中,最核心的就是回滾機制,當插件加載之后,正在運行,出現(xiàn)了一些崩潰等影響用戶使用的案例,連續(xù)崩潰等重大錯誤行為嚴重影響用戶的使用,這時候,回滾機制就會判斷出出現(xiàn)了問題,就會回滾至極簡包,而不加載插件內(nèi)容,保證用戶的使用和體驗。
插件升級通過在wifi情況下的靜默更新服務對用戶做引導升級,快速切換升級至全量業(yè)務。
插件升級對于極簡包升級至主包,升級率的提高,各種下單、登錄成本的降低等等的業(yè)務價值很高。
思考與未來
極簡包在快速獲取新增用戶上面的體驗優(yōu)勢巨大,安裝速度極快,基礎鏈路保證,可以讓用戶體驗到APP功能。架構上整包可以配置更新,版本迭代覆蓋節(jié)奏可控。可以通過插件快速部署各種新包、測試包、A/B實驗包來滿足各種需求。
長遠來看,技術上可以通過插件化動態(tài)編譯技術,業(yè)務和性能可以通過hook實現(xiàn)自動插樁埋點、代碼塊或者業(yè)務塊根據(jù)優(yōu)先級分包下載和加載等等。
關注【阿里巴巴移動技術】微信公眾號,每周 3 篇移動技術實踐&干貨給你思考!
總結
以上是生活随笔為你收集整理的打造手淘极简包的轻量化框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EXOduino外骨骼通信协议
- 下一篇: rip的详细介绍