我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情
通用规范
- SDK发版时需配套有完整且详细的使用说明文档,包括混淆配置说明;
- SDK需要详细记录每个版本的变更内容;
- SDK如果对外开放,需要有一个专门的网站,同时附上SDK的说明文档、demo、变更历史等;
- SDK的minSdkVersion要尽量小,最好不要超过使用SDK的项目的minSdkVersion;
- 尽量不要引用第三方库,要尽量使用android系统自带的功能,然后在其基础上进行封装。如果一定要用到第三方库,可以使用provided依赖,并告知调用方主动依赖这个第三方库。
- 如果打出来的包是aar格式,需要注意res下面的资源文件名称,以避免和调用方的res文件名称冲突,所以一般sdk里面的res文件名称一般加上特定的修饰符,比如公司+项目名称。
- SDK需要有较强的容错性,要增大力度对于SDK内部异常进行捕获。
- SDK对外提供的接口,需要对其传入的参数的合法性和有效性进行检测。
- SDK内部对于关键路径要有详细的Log记录,便于后期排查问题。
开发规范
SDK代码结构层次分明,功能清晰。
一般我们可以分为三层:
- 接入层
接入层的功能就是对外暴露接口,供给调用方使用。
一般对外暴露的接口我们会定义一个接口文件,里面的方法都是可以对外提供的接口。
所以接入层一般都是定义的接口文件,另外还有一个统一管理所有业务功能模块的类,是外界跟SDK交互的统一入口。它还负责统一配置和进行初始化工作,比如初始化业务模块的xxxManager文件。 - 业务层
业务层的作用就是实现具体的业务逻辑。
对于业务层的设计,我们会按照业务功能划分为不同的模块,每一个模块通过xxxManager文件进行管理。xxxManager会具体实现接入层定义的接口方法。 - 基础层
基础层里面包括各种功能模块,比如SDK自行封装的网络请求模块,还有像数据库模块、日志模块、crash模块等等。总而言之就是提供对业务层的支持。
demo
https://github.com/ddnosh/android-demo-sdk