SDK开发注意事项

236 阅读2分钟
  • 整体目标:业务场景调研 & 确定可定制边界、接入成本、代码可扩展性 & 可复用性、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'

参考文献