移动端 SDK 开发经验总结及梳理

做Android开发很多年了,多次思考过App开发和SDK开发在架构方面及其他各个方面的异同,以及各自方向开发时需要注意的事项。

下面是我个人对SDK开发的理解及相关经验分享。

一、SDK 开发概念

SDK即Software Development Kit,通常是为辅助开发某类软件,而编写的特定的软件包、框架集合。同App开发不同,一般我们开发的SDK为相对独立的业务、拥有特定功能的工具集合,使用SDK的一般为B端的用户,一般是集成SDK来实现相关功能的App端开发者,我们会以 代码 + Demo + 文档 的方式交付。

二、SDK 开发建议

1. 便于参考的Demo

集成 Demo 通常是一个简单的 App,用来展示如何快速地接入 SDK。Demo 的源码需要保证方便使用者参考,其版本变更策略和 SDK 版本的变化保持一致。它的开发原则也要与 SDK 一致,确保高质量的交付。

2. 方便查阅的文档

接入文档用来告诉 SDK 使用者,如何使用 SDK、详细使用步骤和可能发生的问题。文档内容包括:更新记录、基本信息、API 说明、集成步骤、FAQ等。好文档的标准就是清晰明了,通俗易懂。一个完全不懂 SDK 的开发者看着文档就能对接,对于经常遇到的问题要逐条列出,专业名词要有对应的解释。

3. 慎用黑科技

开发SDK的人可以注意下以下几个点:

  • 能用系统的API解决的,就不要使用第三方,减少对其他库的依赖
  • 黑科技虽然好,但是能不用的就不要用
  • 多考虑第三方带来的影响
  • 依赖其他SDK的,尽量别打包在一起
  • 能不用单例的就尽量少的使用
  • 核心代码的安全性

三、SDK 开发要领

SDK是需要我们提供给其他开发者使用的,简洁和高效的对接是非常有必要的。如果对接一个SDK很繁琐,或者需要关心很多业务之外的问题,那么说明SDK的设计就是存在问题的。

1. SDK 易用性

SDK本身就是一些公用的代码或者业务的集合,内部做了很多工作,实现了很多细节。 对于开发者而言,一个好的SDK应该是简洁易用的,不应该花费太多时间去对接。通过阅读Demo的代码和文档,就能对接好,才是SDK易用性的体现。

2. SDK 稳定性

我们必须要保证设计的SDK是稳定的,所以在SDK的设计及实现阶段,最好做到以下几点:

a). 尽量保证对外提供的API是稳定的,非特殊情况不要更改。

b). 必须要保证有稳定的业务支撑API的使用。

c). 尽可能屏蔽掉SDK的迭代过程,尽量让用户升级时只需要关注版本号即可,避免出现不必要的升级适配操作。

3. SDK 高性能

性能问题,无论是普通的SDK开发还是应用的开发,都需要考虑到。作为SDK的开发者,我们必须时刻注意到性能问题,否则会影响到接入SDK的App的整体性能。

一般的最需要关注的就是内存及电量这块的使用情况。

a). 优化SDK的内存占用。一般 SDK 和 App 运行在同一进程,此时 SDK 要管理好自己占用的内存,合理分配,注意释放,并避免出现内存抖动。

b). 优化电量消耗。尽量避免在后台运行一些不必要的服务,并优化SDK使用时的CPU使用情况。

四、SDK 设计规范

API 设计在任何开发中都非常重要,许多时候软件的质量好坏体现在 API 的设计上。

在普通的应用开发中,API 只会在开发人员间流通,不会暴露给非本应用开发的其他人员。但是 SDK 作为一种服务,需要向开发者暴露一部分 API,这样才能使用 SDK 的服务。

1. SDK 结构清晰

SDK提供给别人使用的时候,结构清晰非常重要,以下几个点,可以供大家参考:

  • 文件组织方式清晰明了:给别人的SDK,解压下来后第一眼就能够分辨出每个文件夹是什么作用。资源文件,文档,demo,库,应该很容易进行区分。
  • 类名前缀和包命名或者缩写要一致:一定要以正常思考方式进行命名或者缩写。建议以驼峰命名方式。
  • 代码风格一定要一致:不要让人感觉接入过一个SDK,感觉到每一行代码都是不同人操刀的。
  • 函数命名遵循共性,表明其用途:命名这个问题,每个人都有自己的一套,但自己。
  • 代码注释要规范和清楚:接入者不一定回去仔细看文档,所以接口里面的注释必须要认认真真写。
  • API的访问权限必须要控制:不应该出现一些不需要暴露出来的方法,必须控制好API的访问权限,避免出现因此导致的未知异常。

2. SDK 方便调试

SDK提供给别人使用的时候,方便调试是很重要的,能减少对接过程中的问题反馈,以下几点可以参考:

  • 可以对外提供当前SDK状态的一些属性:SDK应该提供一些方法和属性,让接入者知道SDK的当前状态,但是绝对不能让用户直接设置这些状态。
  • SDK功能正确:编译无警告和错误,支持最新的特性,这是用户自行调试解决问题的前提。
  • API调用简单:SDK好用不好用,看调用API就感受出来了。
  • 便于调试:打印出SDK debug日志,给出一些提示性的信息,方便排查问题。
  • API回调参数明确:SDK调用完,需要在合理的实际给用户结果,设计好这些也能便于用户调试。

一般开发SDK是需要包含的辅助功能如下(这里指的是除去主业务功能之外的其他功能):

  • SDK使用日志系统,自由筛选不同日志。
  • Crash日志本地收集。
  • SDK版本控制系统,方便升级及排查问题。

以上这些功能不仅可以方便开发和调试,也提高了测试同学的效率。

posted @ 2021-11-20 16:14  灰色飘零  阅读(1685)  评论(0编辑  收藏  举报