《快手-周全-快手如何利用插件化技术持续提升移动端研发效能.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以整合全球领先经验实践为任,为中国产业快速发展提供智库。可架构主要关注互联架构及可、可扩展及性能领域的知识传播。订阅户覆盖主流互联及软件领域系统架构技术从业员。可架构系列社群是个社区组织,其精神是“分享+交流”,提倡社区的参与,同时从社区获得质量的内容。