14

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

 4 years ago
source link: https://kvh.io/cn/sdk-noop.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

Modified: 2020-04-20

笔者在开发和维护 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 版本,你完全可以自己写一个。

相关文章推荐

No related post.


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK