文字内容
1. 安卓绿⾊色联盟·第20期技术沙⻰龙 赋能产业-猫眼技术开放⽇日 北北京场 2018/9/1 主办⽅方:
2. 猫眼Android多平台模块化 ⽅方案实践 彭亮 猫眼娱乐Android⼯工程师 2
3. 彭亮 扫⼀一扫,不不送饮料料 2014年年加⼊入原美团,⼀一直参与猫眼Android 项⽬目的开发和维护,参与和主导了了多次技术 演进和⾰革新,对于项⽬目模块化有深刻的理理解, ⽬目前为猫眼Android技术负责⼈人。
4. 目录 1 背景 2 实践 3 结果 contents 4
5. 我们经历了什么 猫眼&微影整合 猫眼APP上线 点评&猫眼整合 美团电影上线 NEXT 2012-02 2013-01 2015-10 2017-09
6. 业务能力输出 NEXT 如何快速往多个流量平台上输出猫眼的业务?
7. 幸福的烦恼 基础设施差异 平台约束(初始化限制、代码规范) UI风格差异 需求差异(平台定位) 发版周期不同步
8. 目录 1 背景 2 实践 3 结果 contents 8
9. 我们的实践 模块化与组件化 UI适配方案 工程管理 NEXT
10. 模块化和组件化 ⻓长评 剧照 影评 预告⽚片 影讯 发⾏行行 搜索 原声 问答 票房 资讯 交易易
11. 平台差异 软件开发中遇到的所有问题 都可以通过增加一层抽象而得以解决 。 业务模块1 ⽹网络 定位 分享 宿主环境 统计 账户 图⽚片 …… 接口定义 业务模块2 业务模块3 依赖注入
12. 依赖注入 Android常见方案 静态初始化 Dagger Roboguice 问题: • 需要集中配置 • 额外第三方库依赖
13. ServiceLoader ⽆需集中配置 延迟初始化 300⾏代码
14. ServiceLoader 搜索业务 需要图⽚片服务 ServiceLoader 查询配置⽂文件 业务降级 assets配置 构建宿主图⽚片 服务实例例 实例例返回 Glide图⽚片服务 未找到匹配配置
15. 模块化粒度 粒度 View 视图、Model、 请求、 事件处理复用; 特点 宿主需要了解业务细 节,在宿主进行业务组 装 复⽤用率 80% Fragment Activity 提供了宝贵的生命周 期; 对外直接提供 宿主需要提供一个 Activity,定义 Activity组件包装; 在复用模块内 部,注册在宿主 业务和ActionBar的 部分 交互比较麻烦 95% 99%
16. 模块路由 美团 imeituan://www.meituan.com/actor/detail 点评 dianping://moviecelebritydetail 格瓦拉 gewara://com.gewara.movie/actor/detail 猫眼 meituanmovie://www.meituan.com/actor/detail 路由接口 + ServiceLoader + Impliciy Intent
17. 其它 跨模块调⽤用 模块探测
18. 项目架构 组件库 BASE UI Video Router 交易易 接⼝口层 Utils 影讯 Advert ⽹网络 ServiceLoader 影评 图⽚片 ⻓长评 剧照 定位 分享 账户 影⼈人 统计 宿主环境 预告⽚片 业务模块 问答 资讯 猫眼 票房 美团 搜索 发⾏行行 原声 点评 …… 格瓦拉 可 复 ⽤用
19. UI适配 前端就是画UI
20. 稍微不一样
21. 有点…不一样
22. 完全不一样
23. 分析 UI 展示能⼒力力 输⼊入能⼒力力
24. ViewStub注⼊入
25. 工程管理 需求管理理 发布集成
26. 需求管理 美团 点评 feature_mt feature_dp 格瓦拉 猫眼 feature_my TimeLine feature_mt feature_dp feature_my
27. 发布集成 代码检查 A 1.0.0 编译检查 资源检查 A 1.1.0 代码/资源检查 Code Review A 2.0.0 集成检查 业务模块A 组件池 宿主⼯工程 ⼀一键四端APK ⼀一键⽬目标PR
28. 目录 1 背景 2 实践 3 结果 contents 28
29. 结果 业务开发不不依赖平台,⽀支持新平台扩展 快速业务平铺 ⽀支持多个平台的多样性 最近点播项⽬目开发⼈人⽇日 30pd,平铺到点评 美团 成本1pd
30. THANKS FOR YOUR LISTENING
31. Q&A