王秀刚 - 京东金融多业务集成解决方案

昝琼思

2017/12/18 发布于 技术 分类

随着集团业务的不断发展,研发团队规模增大(100多人),App活跃持续增长(月活千万级),客户端单一的工程已经不能够满足当前业务需求。因此,多工程集成的客户端项目应用而生。 工程结构上的拆分(工程组件化),使整个项目层次分明,业务解耦,对研发效率明显提升。在此基础上,京东金融【再组件化平台】的建立,测试和研发人员可以任意快速的搭建自己需要的业务模块工程,进行单元开发和测试,提高研发和测试的团队协作的效率,简化团队协作流程,快速迭代,保证App的整体性能。

文字内容
1. 京东⾦金金融
 多业务集成解决⽅方案 王秀刚
5. 王秀刚 京东⾦金金融⾼高级架构师 专注于移动架构应⽤用和实践,对编程语⾳音有深刻的理理解,对跨平台研发⽅方⾯面有丰 富的经验;专注于提⾼高客户端整体性能。 曾从事移动地图和导航引擎的研究。
6. • 现状 • 过往 • 组件化 • 组件化深⼊入实践 • 模块化集成
7. 现状 • 近百个版本的迭代 • 理理财,消费,借贷 • 百万级别的代码⾏行行数 • ⼏几⼗十个业务
9. ·多业务发展的监控 • 冗余代码 • 冗余资源 • 性能监控 • 质量量监控 • 业务数据采集 • 代码检测⼯工具 • 图⽚片相似度检测 • 卡顿,内存,cpu,流量量 • 万分之五左右的崩溃率 • 奇点sdk
10. 多业务发展的效率 iOS H5 RN Android
11. 过往 • 编译速度慢 • 代码耦合⾼高 • 模块化模糊 • 资源⽂文件冗余 • 三⽅方库+私有库的管理理 • 分⽀支合并冲突 • 业务模块封闭
12. 组件化 • 私有库和三⽅方库的沉淀 • 堆栈路路由-集中配置 • 模块化解耦 • 降低分⽀支合并冲突 • 资源⽂文件
13. 组件化-堆栈路路由 • 交互统⼀一⼊入⼝口 • 跨平台-Android、iOS、H5 • 堆栈的有效管理理 • 提升APP运⾏行行性能
14. 组件化-堆栈路路由-集中配置 • 宿主+模块=⾼高引⽤用 • 宿主+模块=⾼高粘性 • 宿主+模块=⾼高指令 • 路路由连接点复杂化
15. 组件化-路路由分散配置 • 动态查找⽅方法 • ⽅方法的映射 • 模块扩展类 业务A 业务B 路路由 15
16. • 业务模块实现路路由的分类 • createSelector:(jumpType) 路路由 (业务A) • [instance methodSignatureForSelector:selector] • [NSInvocation invocationWithMethodSignature:] 路路由 (业务B) 路路由 路路由 (业务C) 16
17. 组件化-模块化资源 Framework(⼆二进制+Res) Framework Res • 读取+命名空间⽅方 式,写法复杂 • 资源和代码的强关 联 • ⾮非同名+资源相同 • 同名+资源不不同 17
18. 组件化-模块化资源 framework • ⾮非同名+资源相同 + res • 同名+资源不不同 ipa包增⼤大 bug • 资源检测 ⼯工具 • 命名规范 18
19. 模块化集成-问题回顾 • 编译速度慢 • 业务模块SDK • 不不影响业务研发效率 • 减少联调成本 • 模块化测试
20. 模块化集成-业务模块封闭 权限管理理 模块sdk switch source lib APP
21. 库与⼯工程的关联 • 仓库与⼯工程⽬目录解耦 • 可以通过commandLine程序设置仓 库总⽬目录与⼯工程⽬目录 • 库包括⾃自身的Project⼯工程以及源⽂文 件 • ⼯工程通过配置⽂文件引⼊入仓库源码/Lib • 主⼯工程可修改仓库源⽂文件
22. Lib/Source管理理 soure-repo 开发 发布 仓库管理理员 lib-repo
23. 权限管理理 soure-repo read write 仓库管理理员 read write ⽆无权限 read only lib-repo 开发者
24. 模块化集成 持续集成 中间层 研发环境 中间层 宿主壳 主界⾯面 Module lib Module lib Module lib Module lib Module lib Tool Tool Tool Tool Tool lib lib lib lib lib BaseLib
25. 待解决问题 • UI共享问题 • 包瘦身持续关注 • 热更更新 • ⾃自动化的代码合并