作者:yechaoa
市面上有很多優(yōu)化方案,但是都沒有一個完整的鏈路體系歉秫,現(xiàn)在它來了华临,本文將帶你進階新高度,不管是面試端考、績效KPI雅潭,還是匯報宣講,都能讓你游刃有余却特!
前置必讀:
Android包體積優(yōu)化(常規(guī)扶供、進階、極致)
涵蓋各階段全面的優(yōu)化方案裂明。
注意本文更偏向于方法論和規(guī)劃能力椿浓,重點傾向于如何做好一個技術topic,如果單純的想看技術方案,可以搜索前置必讀扳碍。
一提岔、背景
- 提升下載轉化率
- ...
- 提升更新率,這個是鮮有人提到的笋敞,二次下載同樣重要碱蒙,它能推動業(yè)務快速落地。
二夯巷、現(xiàn)狀
- 最新版本?MB赛惩,突破80大關?100大關趁餐?競對喷兼?
- 近6個月平均每個月增速?MB
- 近6個月平均每個版本更新周期(7天?10天后雷?)
輸出報表
三季惯、目標
減少30MB & 降低30%
四、現(xiàn)狀具體分析
- 圖片占比15%
- 代碼占比25%
- so文件50%
- 其他10%
結合項目分析臀突,輸出每項占比背后的具體因素(設計花哨勉抓?業(yè)務復雜?架構合理惧辈?)
輸出餅圖
五、優(yōu)化思路
- 壓縮參與打包的文件
- 減少參與打包的文件
六磕瓷、規(guī)劃思考
- 如何保證穩(wěn)定性盒齿?
- 如何長效治理?
站在更高的角度去思考問題
七困食、里程碑
- 信息公示
- 確保進度穩(wěn)中推進
- 有風險及時尋求資源支持
八边翁、抓手
- Android Studio
- ApkChecker
- ClassShark
- ...
- 產(chǎn)出具有項目特色的工具
九、技術大圖
匯報示例
十硕盹、圖片優(yōu)化
手動 -> 腳本
十一符匾、代碼優(yōu)化
十二、遠程so
需要熟悉打包流程瘩例,知道Gradle的各種Task執(zhí)行在干什么事啊胶。
打包階段,在合并apk之前垛贤,把需要遠程的so文件上傳至遠端焰坪,然后剔除掉。
Flutter的so遠程這方面沒啥資料聘惦,提一下某饰,源碼搜一下FlutterLoader,繼承FlutterLoader重寫startInitialization,原理就是干預原有的so文件加載路徑黔漂。
12.1 下載流程
沉淀通用的下載SDK
- 網(wǎng)絡狀態(tài)管理
- 下載任務優(yōu)先級調度
- 斷點續(xù)傳
- ...
- 12.1.1 啟動下載(閑時)
閑時下載:用戶是無感知的诫尽,即使失敗,也不需要交互形式表現(xiàn)炬守。
- 12.1.2 按需下載
按需下載:下載流程與閑時下載一樣牧嫉,但交互表現(xiàn)形式不一樣,需要讓用戶感知你在干什么劳较、什么進度驹止,提供一個loading頁承載。
自檢:不一定是我們代碼的問題观蜗,可能是用戶網(wǎng)絡不可用臊恋、存儲不夠等
十三、測試
- 兼容性:android 5.0-12.0
- 是否重復下載墓捻、是否可用(32/64)
- 斷網(wǎng)抖仅、弱網(wǎng)
- 覆蓋安裝
- 前臺退后臺
- ...
十四、監(jiān)控告警
14.1 埋點
- success
- error code/message
- so name
- retry
- demotion
- storage size
- download type
- download time
- 設備信息
- 網(wǎng)絡信息
- 用戶信息
- ...
14.2 監(jiān)控
- 下載成功率
- load成功率
- loading頁打開成功率
- ...
14.3 告警
砖第?分鐘撤卢?次失敗
告警形式包括但不限于釘釘群、微信群梧兼、短信放吩、電話等。
14.4 排障
- 排障指南
- 數(shù)據(jù)庫底表查詢sql
十五羽杰、長效治理
打包后置卡口的設計原理:
- 打包過程中會對資源文件渡紫、代碼文件、jar/aar等文件進行合并考赛,既然知道有哪些文件惕澎,就可以知道這些文件的大小,就可以輸出一個file size的文件作為當前版本的基線颜骤。
- 閾值配置信息可寫死唧喉,可配置。
十六忍抽、結果
- 優(yōu)化前八孝、優(yōu)化后對比
- 競對 對比
- 下載時間對比
- 安裝時間對比
- ...
輸出報表
十七、未來規(guī)劃
- 白名單 logo鸠项?
- 沉淀方法論唆阿?
- 流程工具化、智能化锈锤?
- 月度報告驯鳖?
- 數(shù)據(jù)大盤闲询?
- ...
十八、價值&意義
- 技術:沉淀通用組件浅辙?創(chuàng)新flutter扭弧?
- 團隊:影響力?
- 公司:減少帶寬记舆,全年節(jié)矢肽怼?W經(jīng)費
- 用戶:下載時間減少泽腮?安裝時間減少御蒲?
- 社會:每次下載減少?M流量诊赊,全年節(jié)省流量厚满?億
- ...
十九、思考
- 需要做到極致嗎碧磅?理論上啟動非必須的圖片碘箍、文件、so都是可以遠程的鲸郊。(減肥是要越瘦越好嗎丰榴?)
- 極簡包?
二十秆撮、面試問題
- 為什么選用tinypng四濒,原理是什么削解,還有其他方案嗎你画?
- 遠程so的選定標準是什么?
- 支持斷點續(xù)傳嗎晃琳?
- 會重復下載嗎拨匆?
- 下載可以根據(jù)網(wǎng)絡選擇嗎姆涩?
- 有文件完整性校驗嗎挽拂?
- 有下載優(yōu)先級嗎惭每?
- 怎么避免64位設備下到32位so文件?
- so文件更新之后會在設備上與老的版本共存嗎亏栈?
- 兜底方案是什么台腥?
- 還有哪些可以優(yōu)化的地方?
- ...
最后
- 頂級廚師在線烹飪绒北,做好了自己吃黎侈,不負責喂
- 多思考,深度思考闷游,可以夢到的那種
- 多搞點花樣峻汉,多體現(xiàn)個人部分贴汪,即使沒有技術深度
- 角色轉換,個人休吠、團隊扳埂、產(chǎn)品、拉新運營瘤礁、用戶阳懂、公司、社會...
- 技術價值柜思、業(yè)務價值
- 別忘了三連 ~
不太喜歡理論岩调,更喜歡實際操作的,可以搜索查看赡盘,但是還是建議大家培養(yǎng)一些規(guī)劃類思維号枕,畢竟往上走,總有一天是需要出規(guī)劃和做一些管理的事情的亡脑。