引言
- APP 采用object-C 与 Flutter 混编的形式开发, 未使用storyboard, 基本不使用xib (个别极简页面可以采用xib).
理由:
storyboard 和 xib 均为xml构造, 不便于代码合并. 同时也不便于后期维护
Flutter推荐理由
- 采用MVVM设计模式. 低耦合性, 可重用性更高
- 集成Bugly进行bug统计
- 网络请求基于AFNtework
- 布局采用Masonry
- 图片加载采用SDWebImage
- 使用cocoapods对三方库进行统一管理,使用方便,清晰明了
项目版本管理
- 团队开发, 采用gitlab 对版本进行统一管理
开发环境
- 操作系统: mac os
- 开发软件: xcode 10
开发模式
安全策略
- 网络请求采用 https
- 密码通过MD5, base64 等加密方式进行处理
数据存储方式
- 根据项目需要. 基本字段采用 NSUserdefuat 存储
- 项目数据缓存采用sqlit的方式进行存储
- plist文件写入作为一个备选项
三方库导入方式
- 采用cocoapods统一管理的方式
框架目录结构
工具箱
Base类
- 继承关系图
- Base结构图
Tool类
界面布局
- 主要使用Masonry 进行界面约束
- 部分动态页面可能会使用frame预计算的方式
事件处理
- 常用的事件处理方式(KVC, 通知, delegate, block)基本都会使用到.
- 还会尝试加入一下 cocbjc
###模型转换 - 因为项目中已集成YYKit框架. 所以决定使用YYModel来进行dictionary与model之间的转换
登录, 支付功能
- 对微信, 支付宝支付功能进行封装
- 登录目前只使用到了微信登录
第三方 (定位, 分享, 推送, 登录, 统计, IM)
- 定位:
使用高德地图进行定位 - 分享:
延用现在的友盟分享, 并对其进行二次封装 - 推送:
延用现有的友盟推送 - 统计:
延用现有的友盟分享 - IM
使用融云集成 - bugly 统计线上bug
打包方式
- 打包方式采用基于fir的自动化部署
代码规范
- 遵循 Objective-C编码规范, 提高代码可读性
未完待续