第一章 重构
1.拆分Activity 生命周期 onCreate() -> initVariables()初始化变量、initViews()加载布局文件、loadData()。在BaseActivity声明为抽象方法。
第二章 网络框架设计
1.Get请求数据 Post修改数据。
2.定义Response实体类作为所有JSON数据最外层。包括isError、errorType、errorMessage、result。
3.网络请求失败可以在上层封装一个 统一的处理 如弹出dialog。
4.网络请求要设计缓存功能也要设计强制更新功能。
5.设计MockService功能,返回假数据在服务器没开发完成时候,不会影响客户端开发。
6.统一处理cookie过期。
7.http有必要情况下可以开启gzip压缩。
第三章 Android经典场景的设计
1.post请求不建议有重试机制(服务器有防重机制除外)
2.尽量保证下载的图片符合imageView大小。请求url加上宽高参数
3.低流量模式,url加上quality参数 在2g 3g网络下返回低质量图片
4.对于一些会变化的数据,也要加上版本号,可以做增量更新。
5.某些页面可以控制可以显示Html5页面,开关由服务器控制。
6.内存不足时候全局变量可能被回收,尽量少使用全局变量。
第四章 命名规格和编码规范
1.控件声明为全局变量比较好。
2.在dimen定义字体大小 可以定义tiny small normal normal_high large等等。
第五章 Crash异常收集与统计
1.Crash发送到服务器,给用户友好的提示,把错误记录到Sd卡
2.使用第三方服务帮助分析
第六章 Crash异常分析
第七章 ProGuard技术详解
第八章 持续集成
第九章 App竞品分析
1.App结构
|—— resources.arscz apk文件资源索引表
|—— lib目录下arneabi存放so文件
|—— META-INF存放签名信息(这个目录下文件不会被签名)
|—— assets 本地数据(本地Html css 等)
|—— res资源目录(anim下是动画)
2.加密的xml可用AXMLPrinter2.jar 还原
3.App展示页一般操作(友盟打点统计激活数、注册推送、准备跳转页面、初始化崩溃收集机制或发送需要发送的崩溃)
4.加快Html5打开速度,本地存放Zip包,Zip包有增量更新机制。
5.建议内部图片使用png格式、网络下载图片使用jpg格式 大尺寸图片使用jpg格式
6.自动选取最佳服务器
7.考虑Tcp+protobuf 替换Http+Json
8.打点使用第三方工具
9.对于劫持的应对(公钥私钥解决)
10.xml配置默认数据 防止加载不出数据时候无入口显示
11.App后门 (调试工具等)
12.Dex分包
13.Countly开源的移动应用统计分析平台
14.版本号策略(第二位用于递增 第三位用于紧急发版)(其他策略也可)
15.Zip包可以加密码
第十章 项目管理决定开发进度
1.产品经理自己要想明白要做什么。
2.让html5 提前app一个迭代,保证mobileapi正常
3.有些页面为了保证Monkey可以跑入,可以在程序中设置isMonkey变量。
4.团队Quiet Time提升效率。