SDK(Software Development Kit)软件开发工具包。如:推送SDK、分享SDK等。
SDK 实现目标:简洁、稳定、高效。
SDK开发最终交付物
- 代码
接入文档
文档内容包括:更新记录、基本信息、API 说明、集成步骤、FAQ等。- Demo 示例
开发原则
核心原则
- 稳定,不能导致APP的崩溃。
设计原则
- 可维护性、可重用性、可扩展性
- 接口易用性——降低接入方的使用难度
- 兼容性——新版本对旧版本的兼容
- 命名规范——见名思意
- 多端接口尽量一致
- 尽量不依赖第三方库——与APP依赖冲突且维护成本高
- SDK包尽量小——避免接入方APP增大,影响上架
编码规范
- 命名需见名思意
- 参数的合法性校验
- 方法参数避免过多( Builder 模式或封装为类对象)
- 方法避免直接返回null
- 方法只实现单一职责,单个方法行数不宜太多(可拆分成多个原子方法,做到小而美,而非大而全)
- 访问权限控制,能私有不公开
- 避免引入第三方库
性能
- 内存占用尽量小
- 减少内存抖动(内存频繁的分配与回收)
- 低电量消耗
安全与校验
资源安全
- 资源被覆盖 res、assets目录下所有的文件、在对文件或资源进行命名时,务必添加唯一性的前缀或其他唯一性的命名方案
存储安全
- 数据加密存储
- so库存储
混淆与配置
SDK集成
- maven、gradle 添加依赖
- jar、aar
gradle 依赖指令
- implementation
- api:依赖会传递
- compileOnly
依赖冲突
- 强制使用指定版本
force
configurations.all {
resolutionStrategy {
//解决v4包冲突,强制使用这个版本的v4包
force 'com.android.support:support-v4:26.1.0'
}
}
- 排除SDK中的指定模块
exclude group
implementation("xx.xx:xx") {
exclude group: 'com.android.support'
}