Android App开发入门与实战
上QQ阅读APP看书,第一时间看更新

2.2 SDK设计规范

2.2.1 SDK通用规范

·SDK发布时需配套有完整且详细的使用说明文档,包括混淆配置说明。

·SDK需要详细记录每个版本的变更内容。

·SDK如果对外开放,需要有一个专门的网站,同时附上SDK的说明文档、demo、变更历史等。

·SDK的minSdkVersion要尽量小,最好不要超过使用SDK的项目的minSdkVersion。

·尽量不要引用第三方库,要尽量使用Android系统自带的功能,然后在其基础上进行封装。如果一定要用到第三方库,可以使用provided依赖,并告知调用方主动依赖这个第三方库。

·如果打出来的包是AAR格式的,需要注意res下面的资源文件名称,以避免和调用方的res文件名称冲突,所以一般SDK里面的res文件名称需加上特定的修饰符,例如公司 + 项目名称。

·SDK需要有较强的容错性,要增大力度对SDK内部的异常进行捕获。

·SDK对外提供的接口,需要对其传入的参数的合法性和有效性进行检测。

·SDK内部对于关键路径要有详细的Log记录,便于后期排查问题。

2.2.2 SDK开发规范

SDK需要做到代码结构层次分明,功能清晰。

一个典型的SDK一般可以分为以下3层。

1. 接入层

接入层的功能就是对外提供接口,供给调用方使用。一般对外提供的接口我们会定义一个接口文件,里面的方法都是可以对外提供的接口。所以接入层一般都是定义的接口文件,另外还有一个统一管理所有业务功能模块的类,是外界跟SDK交互的统一入口。它还负责统一配置和进行初始化工作,例如初始化业务模块的Manager文件。

2. 业务层

业务层的作用就是实现具体的业务逻辑。对于业务层的设计,我们会按照业务功能划分为不同的模块,每一个模块通过对应的Manager文件进行管理,并且Manager文件会具体实现接入层定义的接口方法。

3. 基础层

基础层里面包括各种功能模块,例如SDK自行封装的网络请求模块,还有数据库模块、日志模块、Crash模块等。总而言之就是对业务层提供支持。

图2.1所示是SDK各层调用流程图。

图2.1 SDK各层调用流程图

2.2.3 SDK开发实例

一个完整的SDK项目实例目录结构如图2.2所示。

图2.2 SDK项目实例目录结构

其中api代表接入层,business代表业务层,common代表基础层。