- 整体目标:业务场景调研 & 确定可定制边界、接入成本、代码可扩展性 & 可复用性、SDK稳定性 & 兼容性
- 定制能力:分层设计(场景层、内核层)、配置项、配置接口(Logger、Toast、Dialog)、Flavor
- 权限隔离&协作开发:组件化设计,使用 DAGGER2 降低接入成本
- 指标建立:业务指标、体验指标、技术指标
- 版本兼容:minSdkVersion、buildToolVersion
- 接口设计:向前兼容、注释、空安全、清晰简洁
- 冲突问题:重写长链接、重写三方库
- 变更问题:抽离中间层(RTC)
指标建立
- 业务指标
- 接入管线:清北网校、清北小班、大力智能、学浪、你拍一
- 服务次数(直播场次、服务人数、服务人次):一年120多万场次直播、覆盖3000万人次
- 接入成本:3天接入能力,底层基于复用能力 + 提供可定制化能力 + 无侵入方案 + 配置中心
- 体验指标
- 进教室成功率、进教室耗时、RTC卡顿率、RTC首帧时间、连麦成功率、课件加载成功率/加载时间、白板流畅度
- OnCall解决率、回复速度(快、准、全)
- 线上事故数:P1事故 0、P2事故 <= 1、P3事故 <= 5(影响时间、影响范围)
- 课件加载失败、摄像头无法打开、无法进入回放
- 崩溃占比
- 技术指标
- 包大小
- 内存占用
- 代码覆盖率
版本冲突
Java Version、minSdkVersion、buildToolVersion
依赖冲突
- 尽量少依赖三方库
- 修改包名重写(长链接)
- 中间层(RTC)
- 稳定二方库
向下兼容
通过@Deprecated标注,若干版本后再删除接口
非空处理
@Nullable、@NonNull
接口注释
- 清晰的注释有助于用户了解接口的功能
- 接入指南
依赖倒置
只暴露接口,不暴露实现
需求边界
- 不做需求臆想
- 边界问题
- 接入成本、可扩展性、代码复用能力
数据收集
稳定性数据、性能数据
工程混淆
consumerProguardFiles 'proguard-a.pro','proguard-b.pro'