姚彤-从360手机卫士的研发经历看大型移动应用开发


从360手机卫士的研发经历看大 型移动应用开发 奇虎360 姚彤 个人简介 •  360公司技术委员会委员 •  目前负责手机卫士的技术工作 •  曾就职于微软、金山 目录 •  项目状况 •  移动开发的特色 •  体系架构 •  研发流程 •  组织架构 •  版本发布流程 •  从安全研究的角度看行业现状 项目现状 •  团队150+ •  分为10多个小团队 •  42个大小模块,若干个独立产品 曾经很迷茫 •  程序规模越来越大 •  内存占用高,卡、慢 •  崩溃率居高不下 •  多个功能纠缠在一起 •  适配问题层出不穷 •  发布版本疲于奔命 •  疑难杂症定位困难 走上正轨 •  从3月10日到9月9日 – 大小版本47个 – 正常节奏为每月3个Beta版,一个正式版 项目规模的变化 /通用格式 /通用格式 /通用格式 /通用格式 /通用格式 /通用格式 4.3.8 4.6.0 5.0.6 5.1.0 5.2.0 5.2.5 AndroidManifest.xml文件大小(单位:K) 文件大小(单 位:K) 增长72% 安装包大小的变化 /通用格式 /通用格式 /通用格式 /通用格式 /通用格式 /通用格式 /通用格式 /通用格式 /通用格式 /通用格式 /通用格式 4.3.8 4.6.0 5.1.0 5.1.5 5.2.0 5.2.3 5.2.5 安装包大小 安装包大小 持续提高 •  常驻内存由60M降低到20多M •  UI启动速度4~5s提高到1s左右 •  崩溃率万分之六 移动应用的一些特色 •  安装包体积 •  内存占用 •  耗电情况 •  兼容性问题 •  流量问题 •  升级异常困难 •  安全软件的特有问题 •  整个行业比较年轻 体系架构上的挑战与应对 •  多进程化 •  插件化 •  云化 •  公用库、SDK化 •  强大灵活的升级 •  丰富的诊断方法 多进程化 •  成本不高 •  按需加载降低内存占用 •  业务隔离提高稳定性 •  从6个进程变为17个进程 插件化 •  方法数过多的危害 –  无法安装 –  Build过程缓慢 –  安装包变大 •  降低内存占用 •  团队和模块解耦 –  独立开发 –  独立发布 –  快速升级 –  节省升级流量 •  好的插件框架是一个很大的挑战 云化 •  代码修改 •  数据驱动 •  云化 – 不同网络环境下的产品策略 •  优势 – 秒级响应速度 – 降低安装包大小 – 实时感知能力 公用库 •  减少重复劳动 •  降低多产品集成成本 •  提升代码质量 •  保证多产品UI风格一致 升级机制 •  提供多种升级控制变量 •  增量升级、断点续传 •  充分考虑不同网络类型下的升级策略 •  足够的安全机制 •  能够对抗常见的网络劫持 诊断机制 •  手机问题诊断非常费时费力 •  早期10多个诊断工具 •  后期变为All-in-one诊断插件 – 既可作为插件 – 也可作为独立应用 – 可以利用Root能力 研发流程 •  Code review •  Build流程 •  代码扫描工具 •  外来代码质量控制 •  自动化测试 •  安全审核 Build流程 •  质量,从每个Build抓起 •  Build失败不是小事儿! •  自己开发的Build系统 •  支持自动Build和手动触发 •  结果通过邮件通知 •  整合代码扫描工具 •  整合自动化测试 •  监控安装包体积和方法数变化 Build管理 关键参数追踪 APK参数追踪 代码扫描工具 •  Checkstyle •  Lint •  自有代码扫描工具(基于PMD) – 制定代码红线 •  每个开发都需要启用 外来代码质量控制 •  外来代码是造成质量事故的重要原因 –  代码逻辑修改 –  数据调整 –  功能错位 •  更加严格的要求外来代码 –  保证代码可追朔 –  代码审计 –  整合测试 –  黑盒逆向分析 –  追踪外来模块导致的崩溃 自动化测试 •  性能测试 – 耗电 – CPU – 内存 •  常规功能测试 自动化测试 •  用例管理平台 – 自己开发 •  用例分发与运行平台 – 自己开发 •  手机端用例执行 – uiautomator – 基于Roboum改造 用例管理平台 用例分发 手机端测试框架的选择 性能测试 性能测试 功耗测试 功耗测试仪器 功能测试 BVT case 安全审核 •  安全审核是所有产品的最后一关 •  公司和部门都有专业团队 •  黑盒审计 •  自动化扫描工具与人工相结合 组织架构 •  小团队 •  少开大会 •  专人维护Build系统 •  专门的架构组 •  专门的质量改进组 – 高手重点突破 •  专门的自动化测试组 •  每周召开质量会 发布流程与方法 •  多种发布手段 –  市场 –  首页 –  内测群 –  灰度升级 •  多种升级控制变量 –  地域 –  机型 –  网络类型 –  历史版本号 发布后的监控 •  用户反馈量 – 论坛 – 市场 – 社会化媒体 •  崩溃率跟踪 •  重点统计数据变化 第三方软件的安全审计 •  普遍缺乏安全意识 –  《手机银行客户端安全性测评报告》 –  错误导出组件 –  参数校验不严 –  WebView引入各种安全问题 –  不混淆、不防二次打包 –  明文存储关键信息 –  错误使用HTTPS –  山寨加密方法 •  各种第三方SDK(广告等)引入安全问题 使用自动化工具进行扫描 说明 项目 应用个数 占比 至少存在一个崩溃 crash 743 76.9% 存在广播崩溃 broadcast crash 473 48.9% 存在acvity崩溃 acvity crash 541 56 % 存在服务崩溃 service crash 248 25.6% 存在忽略hps证书校验的问题 x509 problem 588 60.8% 使用了webview,存在JS问题 javascript problem 741 76.7% 接受了url参数,可对webview进行攻击 webview_aack 191 9.8% 存在全局可读文件 readable_file 354 36.6% 存在全局可写文件 writable_file 132 13.6% Sql注入 injectable_uris 95 9.8% Sql遍历 traversal_uris 10 1% @InfoQ infoqchina 备用 常量池对比
还剩47页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf