《快手-周全-快手如何利用插件化技術持續提升移動端研發效能.pdf》由會員分享,可在線閱讀,更多相關《快手-周全-快手如何利用插件化技術持續提升移動端研發效能.pdf(60頁珍藏版)》請在三個皮匠報告上搜索。
1、如何利插件化持續提升研發效能周全 快基礎架構中研發效能插件化技術想跟家聊兩個東快架構團隊是如何建設移動研發效能的為什么會復活插件化這個遠古技術移動研發效能架構團隊從 2022 年開始正式推進 移動研發效能 建設WHAT 什么是研發效能HOW 怎么度量誰來做WHO 誰關怎么做移動研發效能WHO 誰關板這功能多久能上線這個Q上線了多少需求了多少交付流速開發Native開發14 測試線上運維發布5天2天7天交付流速開發Native開發14 測試線上運維發布5天2天7天所有問題在架構師眼都是架構問題交付流速如研發過程中的 編譯速度架構師眼最好的解決案-減少編譯量-組件化發布效能商店審核周期需求開發周期
2、版本覆蓋功能觸達再趕上個拒審,涼涼架構師眼最好的解決案-動態發布-容器化架構演進路線針對系列效能問題,我們確定了快的架構述求獨開發獨測試獨集成獨發布獨運維理想很飽滿,現實很殘酷規模耦合APP業務功能聚合戶為收斂協作模式耦和超過1000個模塊千萬規模源碼19Dex 100M包體積重Native體驗重視頻重技術債單倉有沒有成本低,速度快,效果好的案呢?分層架構組件架構容器架構 跨度是不是太了?分層架構組件架構容器架構分層架構組件架構容器架構插件架構為什么不能跳科技為什么是插件化改造成本維護成本插件化架構的本質是實現業務可插拔,既拔出個業務功能,也不影響APP整體功能。當我們把所有業務都拔出來后,呈
3、現在眼前的就是個完美的容器化基座。通過插件化獨開發獨測試獨集成獨發布獨運維先不要興的太早VirtualAPKAtlasQigsawDroidPlugin前輩們的輝煌留在了曾經插件化跌下神壇兼容性差性能差劣化接成本研發成本(插件化本身)板既要效果好還要成本低更要速度快接成本接成本拆分難接復雜改變開發流程&維護難接成本插件跨版本兼容能放棄更低的改造成本更便捷的開發模式更好的性能換取接成本AABFollow完整延續組件化路線跟進官案,可維護性組件即插件組件即插件組件即插件組件即插件達到組件化狀態,即可轉換為插件化組件即插件平均接速度:周快速切換插件&組件集成狀態組件即插件性能性能性能性能差異 2%兼
4、容性Android碎化private void hookInstrumentationAndHandler()try Instrumentation baseInstrumentation=ReflectUtil.getInstrumentation(this.mContext);if(baseInstrumentation.getClass().getName().contains(lbe)/reject executing in paralell space,for example,lbe.System.exit(0);/*創建Instrumentation的代理類VAInstrument
5、ation;*(將Instrumentation作為參數傳,這樣可以在調系統邏輯之前進預處理)*/final VAInstrumentation instrumentation=new VAInstrumentation(this,baseInstrumentation);Object activityThread=ReflectUtil.getActivityThread(this.mContext);ReflectUtil.setInstrumentation(activityThread,instrumentation);ReflectUtil.setHandlerCallback(th
6、is.mContext,instrumentation);this.mInstrumentation=instrumentation;catch(Exception e)e.printStackTrace();量Hook兼容性量反射過去如果我們想簡單Hook下“startActivity”兼容性0反射context.startActivity(intent)PluginUtils.startActivity(context,intent)兼容性0反射0反射案最早出騰訊的Shadow站在效能度,最的難點是影響編譯速度2000W全量源碼 Javassist or ASM處理次10minAsuka編
7、譯框架 10min-10s業務轉化率插件需要下載&加載30M插件下載 P50 30s加載 P50 300ms業務觸達-2%業務轉化率結合AI的預熱機制:插件下載耗時-20%業務轉化率常規增量策略,如CorePatch業務轉化率常規增量策略,如CorePatch業務轉化率研增量策略KzipPatch獨開發獨測試 獨發布問題解決了,我們再看看插件化如何增益效能獨開發這是理想的架構圖獨開發這是真實的架構圖獨開發問就是ROI不獨開發獨開發的關鍵是:誘導業務閉環在的領域獨開發插件編譯模式:隔離業務依賴秒級編譯gradlew:app:aDebug:feature:aDebugadb install-mul
8、tiple app.apk feature.apkgradlew:feature:aDebugadb install-multiple feature.apk獨發布插件化有天然的獨發布優勢但我們的技術案放棄了這些優勢代碼都在個Git倉庫 便管理所有業務實現都被捆綁在起 耦合嚴重組件即插件 業務改造難度低所有插件代碼同編譯 容易產邊界影響獨發布要設計個特別復雜的發布流程解決單倉的版本感知問題好難呀煩死了啊啊啊獨發布混淆獨發布如果分開發布A和B,就可能沖突獨發布Mapping分割 解決符號變化問題獨發布Mapping分割 解決符號變化問題獨發布AAB單倉模式做到多倉樣的發布能發布周期 7天-1天為
9、什么我只修改的法,還要“集成測試”?舉個栗如果插件B去除了對foo法的引獨測試獨發布引插件邊界,保證邊界穩定獨測試基于插件邊界,更容易實現精準化測試安裝包體積收獲160M50m上線120+插件 秒變仙安裝包體積收獲甚能波的 直接把快整體插件化 瘦身到15M我們到底應該如何看待研發效能?了解更多技術實踐案例思博(msup)有限公司是家向技術型企業的培訓咨詢機構,攜2000余位中外客座導師,服務于技術團隊的能提升、軟件程效能和產品創新迭代,超過3000余家企業續約學習,是科技領域占有率第1的客座導師品牌,msup以整合全球領先經驗實踐為任,為中國產業快速發展提供智庫??杉軜嬛饕P注互聯架構及可、可擴展及性能領域的知識傳播。訂閱戶覆蓋主流互聯及軟件領域系統架構技術從業員??杉軜嬒盗猩缛菏莻€社區組織,其精神是“分享+交流”,提倡社區的參與,同時從社區獲得質量的內容。