Android-SDK开发
条评论SDK简介
SDK(Software Development Kit),广泛意义上的 SDK
一般都是为特定的软件包、软件框架、硬件平台、操作系统等建立应用程序时所使用的开发工具的集合(系统 SDK
)。而狭义上的 SDK
(应用 SDK
) 则是基于系统 SDK
进行开发的新的、独立于具体业务且完成特定功能的一组工具的集合。通常情况下,SDK 在应用程序中是作为特定功能提供者的角色出现的。例如推送功能的 SDK、统计功能的 SDK、广告功能的 SDK、性能监测功能的 SDK 以及分享功能的 SDK 等等。
SDK设计
- 易用性
- 稳定性
- 灵活性
- 最小资源开销
- 主线程
- 最小权限原则
- 严格的生命周期把控
API设计
- 单一职责原则
- 参数尽可能少
- 参数合法性校验
- 优美的降解(预期的异常抛出)
- 实现不要影响API
版本管理
1 | alpha版本 |
alpha 版:该版本表示该 SDK 产品在此阶段主要是以实现功能为主,通常只在开发团队内部交流使用。一般来说,该版本的 SDK 产品存在的 Bug 较多,需要经历多个 alpha 版本的迭代才能进入 beta 版。
beta 版:该版本相对于 alpha 版已经有了很大的改进,修复了严重的 Bug,但是还存在一些已知或是未知的 Bug,通常情况下只在开发团队以及测试团队之间交流使用,需要经历多个 beta 版本的迭代才能进入 rc 版。
release candidate 版(rc 版):该版本的 SDK 趋于成熟,基本上不会出现导致错误的 Bug,原则上不再增加新的功能,与正式发布的正式版没有太大的差异。通常情况下该版本用于进行小规模灰度测试,原则上不会提供给应用程序开发者使用。
release 版:该版本意味着 最终发布,在经历了前面几个版本的迭代之后产生的最终版本,也就是最终交付到应用程序开发者使用的版本。
SDK版本号命名
一个比较合理的版本号命名规范由如下四部分组成:
V1_0_2_201904301717_beta
- 主版本号(1)
- 子版本号(0)
- 阶段版本号(2)
- 迭代版本号(201904301717_beta)
SDK版本号修改原则:
主版本号:当功能模块有较大的变动,比如增加多个模块或者 SDK 整体架构发生变化时,由需求决定是否修改。
子版本号:当功能有一定的增加或变化时,由项目决定是否修改。
阶段版本号:当修复 Bug 以及小规模调整时,需要经常发布修订版,此时可由项目经理决定是否修改。
迭代版本号:用于记录该版本的 SDK 发布时的时间以及当前的迭代状态。原则上,当项目处于 alpha、beta以及 rc 版时,该版本号需要体现每一次的修改时间以及状态。当项目处于 release 版时,该版本号用于记录该版本的发版时间。
API版本管理
API
的版本受到 SDK 版本迭代状态的约束,但是不受 SDK 版本号修改原则的限制。
只有处于 release
(或rc
) 状态的 API 才能是对外提供服务的,否则该 API 应该是对应用程序开发人员不可见的。换句话说就是,坚决不发布处于 alpha 和 beta 状态的 API。
API 一旦对外发布,其内部实现以及方法签名原则上处于不可变更状态:
如果需要修改 API 的内部实现,在保证方法签名不变的情况下,API 必须通过测试用例的边界及功能测试,并尽可能的给出原 API 实现的备份——使用oldMethodName
前缀标识原 API;
如果需要变更方法签名,比如增加、删除参数或是改变返回值类型,那么在保证原 API 不变的情况下,使用方法重载实现新的 API。
如果需要废弃某些 API,应在 SDK release 版本迭代的前 N 个版本使用@deprecated
标识需要废弃的 API,并给出该 API 的替代方案以及具体的 API 移除时间(或是 SDK 版本)。
Reference
本文标题:Android-SDK开发
文章作者:xmaihh
发布时间:2019-04-30
最后更新:2019-04-30
原始链接:https://xmaihh.github.io/blog/2019/04/30/android-sdk-kai-fa/
版权声明:采用[CC BY-NC-SA 4.0许可协议]进行许可
分享