浅谈App开发
整体架构和项目分层
- app业务层
首页、活动、社区、个人中心等 - app公共业务层(组件化开发)
支付组件、分享组件、城市选择、业务工具类等 - 底层SDK库,多个app共用
网络通信、文件存储、图片加载、公共工具类、CrashHandler、JSBridge、LBS等 - Third Libs
通信通道
- 网络现状
- 网络连接不稳定,尤其在弱网情况
- 多运营商
- 延时高
- 地区差异大
- Dns劫持严重
- 解决方案
- 域名合并
- 减少多次DNS解析
- 减少TCP连接数量(HTTP Keep-Alive)
- 增强错误的一致性
- 多通道长连接(WNS长连,原生短连,UDP)
WebView容器
- UI封装
- JSBridge桥接
Android和iOS的统一实现
自制bridge.js.txt文件向JS中注入对象
Crash监控
我们需要一个全局的异常捕获器,当出现一个我们没有发现的异常时,捕获这个异常,并且将异常信息保存下来,上传到服务器提供给开发人员来分析出现异常的具体原因。
- 异常文件缓存策略
- 防频策略
- 上报服务器策略
Crash报表统计
Hotfix
iOS
–WAX
–NU
–JSPatch
Android
–andfix方法替换
灰度发布、后台上线发布回滚配合
Mock技术
-
对于客户端开发人员(Android/iOS/Web)
直观看到网络请求的发送内容和响应
更早的按照服务器接口联调
更灵活的Mock服务器返回的数据,方便发现问题 -
对于测试人员
直观查看客户端的请求和服务器的返回数据
方便通过Mock服务器返回数据来进行客户端测试
方便模拟请求来测试服务器接口 -
对于服务端开发人员
方便在开发的过程中自测自己开发的接口
原理
结果展示
功能展示
高效持续集成&打包
Gitlab+Jenkins+编译打包脚本文件(Fastlane/Shell脚本)
Gradlew&Cocoapods
测试环境:蒲公英平台(二维码扫描安装)
AppStore和Android市场:直接脚本上传市场
发布版本时注意ipa和apk的备份,以便之后的版本回滚测试
iOS上线流程
运营类配置流程
需求流程
用户行为数据上报(友盟统计、自己搭建打点服务器)
老板要DAU数据?
要路径分析&漏洞分析做产品决策?
要机型&版本占比确定技术方案?
……
上报字段规整
锚点信息
用户操作
版本渠道信息
设备信息
用户信息
业务信息
仓库管理
iOS
–Cocoapods仓库管理
Android
–Maven仓库管理
Cocoapods私库
http://guides.cocoapods.org/making/private-cocoapods.html
Maven私库
maven私库:http://www.devtf.cn/?p=1079
android的deploy解决方案:https://github.com/luckybilly/OKDALM
androidstudio的maven私服使用:http://blog.****.net/cdecde111/article/details/51777427
git代码管理
Teamwork flow:
-develop(开发分支,请从开发分支pull源代码并branch自已的分支进行开发)
代码合并流程
文档管理
Debug面板
方便QA测试和问题的跟踪
环境切换
内存和cpu消耗
清除本地数据
模拟网络延迟
模拟50%网络错误
ipa/apk大小统计
重置进程
模拟crash
模拟位置
保存一键登录
小结
以上是我对App开发的一点小心得,如果发现有任何问题,或者有什么想法,随时联系我,大家一起交流,共同进步。
我的邮箱 [email protected]