《快手-周全-快手如何利用插件化技术持续提升移动端研发效能.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站在效能度,最的难点是影响编译速度