SDK 开发最佳实践之一:为你的 SDK 增加 No-Op 版本

目录
  1. 1. SDK 的使用场景
  2. 2. 区分版本方案
  3. 3. 最优雅的方案
  4. 4. 最后的结果
  5. 5. 扩展

笔者在开发和维护 Bugtags SDK 的一年多时间里面,趟过了不少坑,走了不少弯路,也积累了不少经验。这个 SDK 开发最佳实践系列,就是分享经验教训,帮助读者打造一款跟 Bugtags 这样快速成长的 SDK。

SDK 的使用场景

站在用户的角度来看,引入一个 SDK 可能会带来几方面的问题:

  • 包增大
  • 可能不稳定
  • 安全性问题

对于一些 SDK,产品形态是允许在测试阶段开启,上线移除的,例如性能调试工具,测试工具等。

区分版本方案

最简单的,就是手动注释代码,应用中如果只使用了这个 SDK 的一个 API,那还好,如果用到了多个,分布在不同的文件中,
这事儿就麻烦了。很不优雅。

最优雅的方案

思考一下这个需求

  • 应用分为 debug/release 版本
  • 无痛切换,最好能够实现自动化

大部分的编译系统,例如 Gradle/Maven 都可以区分版本,引入不同的包。利用这个特性,我们可以实现一个 No-Op SDK。

这个 SDK 具有如下特点:

  • 具有正式 SDK 的所有可以被外部引用的类
  • 具有正式 SDK 的所有对外 API
  • 足够的精简
  • 提示正在使用 No-Op SDK

最后的结果

以 bugtags 为例:

1
2
debugCompile 'com.bugtags.library:bugtags-lib:2.0.0'
releaseCompile 'com.bugtags.library:bugtags-noop:2.0.0'

以 leakcanary 为例:

1
2
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'

扩展

如果你是一个 SDK 的使用者,即便官方没有提供 No-Op 版本,你完全可以自己写一个。

本文由 kvh 创作,采用 CC BY 3.0 CN协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
相关文章推荐

No related post.