项目经验(1): 手游宝一年的总结 - clarkehe/Android GitHub Wiki

工作要点

每日:

  1. 版本crash率,特别是灰度版本。
  2. 灯塔协议成功率等质量数据。
  3. DAU等产品MTA数据。
  4. FindBugs扫描结果。
  5. 金刚扫描结果。


其他定期任务:

  1. 工程无用资源、代码扫描。
  2. 用户反馈关注:邮件反馈,应用宝反馈,其他产品的反馈渠道。

需求评审:

  1. 评审会叫上所有人,需求还是从头开始了解。
  2. 需求分配后,需要有针对性对需求进行细评(也可开发找产品单独确认),确认细节。

迭代:

  1. 每日进度。
  2. bug修改情况。(包括适配bug, FindBugs的bug)
  3. 关注每个人的代码提交,看修改点,实现思路、协议。
  4. 关注平台的功能,特别是代码交互的功能,除了看功能是否正常外,还是看接口调用的细节。
  5. 要求平台迟早返回需求专区处理的问题,不要等到最后或发布前。 


开发:

  1. 自己改或修改的代码最好跑一遍、看日志,还最好单步执行一遍。
  2. java中类型强制不安全,有些机型可以,有些可能就不行。加 is instanceof?
  3. 技术方案确认?
  4. 技术方案与IOS同步。


转测:

  1. 测试点要列全,每个点要注意的地方要加上(开发人员列、需求单);
  2. 其他优化、重构的点。
  3. 测试要点要RTX甚至口头确认。
  4. 平台专区交叉的点在确认,谁负责测试。
  5. 发布前的提交要慎重,没有必要修改代码的可以不提交。
  6. 已经稳定的模块如果没有必要,不修改;修改了也要充分自测,并提交测试回归。
  7. 旧版本兼容性测试。服务器发布前用旧客户端测试兼容。
  8. 适配测试。一般在灰度期间,使用稳定Release包测试,不用稳定版本会测出一些功能BUG, 使用测试重点不在兼容性上。需要测试提前预约安排。

测试:

  1. 需求评审、项目迭代没有叫上测试人员;
  2. 测试用例还是很有必要,避免回归时遗漏一些点。
  3. 平台、专区交叉需求,导致两边都没有关注。
  4. 提crash的bug时,除带了log文件外,还带上crash文件。


发布:

  1. Bug清理.
  2. RDM上的CRASH清理。
  3. FindBugs清理。
  4. 发布前,在功能稳定的前提下,尽量不要重构、优化代码。
这个问题说过很多次,其实一直在犯这个错误。多次情况都证明,
这种重构会带来问题。



其他经验:

  1. pb协议定义,返回码使用:int result。
  2. XML布局文件,字体大小使用dp,不是sp。
  3. 效果图及标准:尺寸=1280x720, dpi=2。
  4. 小图标使用字体文件。IconFontTextView
  5. 服务器更新图片,要改名。本地缓存是以名字为KEY.
  6. 图片资源尽可能的使用JPG格式,文件小一点。

质量监控及优化:

  1. crash:RDM
  2. ANR: RDM
  3. 产品数据:MTA
  4. 协议成功率(Web及图片加载):灯塔
  5. FindBugs及金刚扫描:邮件
  6. 启动速度?wxPerformance:布局、逻辑优化
  7. 流畅度? 过度绘制、布局优化
  8. 内存泄漏。LeakCanary
  9. 内存占用?
  10. 流量使用?
  11. 包大小?:无用资源及代码扫描。gradle lintClean