美文网首页
移动App架构和工程化拆分

移动App架构和工程化拆分

作者: 淡定小问题 | 来源:发表于2017-11-13 11:34 被阅读104次

App 架构

App架构.png

工程拆分和团队协作方式

工程拆分和团队协作.png

概念

1. 组件化开发

  1. 主要是为了解决团队协作,工程拆分,应用结构组织和划分的能力
  2. 和动态能力没有必然联系

2. 动态组件化

  1. 组件化的进一步进化,可以实现运行期的组概念,组建的更新,降级,增删等
  2. 组件化的开发模式是必要条件

3. 插件化

  1. 关注拆分和线上插件的插拔
  2. 项目拆分是必要条件

4. 热更新

  1. 重点关注是线上bugfix 和 小功能升级
  2. 一般不支持四大组件更新(无法直接完成大量功能更新)
  3. Android上主要是一些hack方案

5. 动态化的能力

  1. 热更新和插件化本质上是一种hack方案,多多少少会面临适配问题,国内厂商改造系统的风气,适配问题更多。
  2. 类似RN,Weex,Flutter是另一种形式的动态化能力,通过抽象层实现动态化,几乎不存在hack的问题

6. hotfix

线上的bugfix,进一步讲是:运行中的app可以修复bug,不用等到下次启动修复

应用插件化可能遇到的问题

  1. 打包流程改造的问题
  2. 适配问题
  3. 版本管理问题,各个插件依赖版本的问题(动态)
  4. 应用路径比较长,拆分是先决条件
  5. 底层API变动的问题(线上动态的情况)
  6. 集成和构建工具的问题

建议路径(组件化开发 + 热更新能力)

  1. 工程上微信的fake module
  2. 工程上简单,不需要改造编译流程,集成流程
  3. 不需要复杂的基础设置建设(maven管理等)
  4. Components没有版本的概念,热更新整体升级,简单直白的升级逻辑
  5. 拆分是渐进的,不拆分也可以做热更新
  6. 热更新对项目拆分没有要求
  7. 和现有的开发模式最接近,没有学习成本
  8. 配合热更新可以做紧急版本的发布,线上严重bugfix
  9. 结合一定的抽象和内置占位组建,可以实现大部分的业务功能更新
  10. 配合freeline/fastdex 可以解决编译慢的问题
  11. 支持渐进拆分
  12. 拆分可以到非常小的粒度

整体上来说:
最简单的方案,技术挑战最小,项目结构也能进一步清晰化,可以快速的集成热更新能力,满足现在和未来可预期一段时间内的发布需求


目标

高效的开发高质量的应用

高效:

  1. 开发效率上的高效
  2. 团队协作的高效
  3. 测试的高效
  4. 新功能,业务交付用户的高效
  5. 线上运维的高效
  6. 运营的高效

高质量:
(从终端用户角度出发定义)

  1. 用户体验良好(界面的卡顿,视频的卡顿)
  2. 资源消耗合理(电量,内存,cpu,发热等等)
  3. 崩溃率/ANR率/黑屏率
  4. 可以衡量的线上终端用户感受到的质量
  5. 质量问题的预防/卡口体系

要达到目标需要做到的:

  1. 技术债务
  2. App架构
  3. 工程拆分和团队合作
  4. 质量体系建设
  5. 自动化的测试体系
  6. 持续集成和持续交付系统

核心点:

  1. 清晰的,低耦合的app架构
  2. 工程化拆分,方便团队协作,降低摩擦和整体复杂度
  3. 持续交付的体系建设和质量保证体系建设
  4. 不断的积累稳定高效的基础类库

理念->提高层次,降低复杂度:

架构上降低设计复杂度,拆分降低团队协作复杂度,持续交付降低工程复杂度。基础类库,提高抽象层次。


Android彻底组件化方案实践

微信Android模块化架构重构实践

相关文章

网友评论

      本文标题:移动App架构和工程化拆分

      本文链接:https://www.haomeiwen.com/subject/fczamxtx.html