首页 > 编程知识 正文

编写sdk,java sdk设计

时间:2023-05-05 20:10:09 阅读:227753 作者:4935

一、关于SDK的解释

SDK是Software Development Kit的缩写,译为”软件开发工具包”,通常是为辅助开发某类软件而编写的特定软件包,框架集合等,SDK一般包含相关文档,范例和工具.

SDK可以分为系统SDK和应用SDK.所谓的系统SDK是为特定的软件包,软件框架,硬件平台,操作系统等应用时所使用的开发工具集合.而应用SDK则是基于系统SDK开发的独立于具体业务而具有特定功能的集合.

比如在进行Android 应用开发时,我们使用Google提供的系统SDK(Android SDK),而我们经常使用的友盟SDK、极光SDK则是基于系统SDK开发的.

明确SDK的概念之后,再来聊一聊这三个概念:Library,API,Framework

什么是Library

Library即我们所说的库,通常是一组或者几组类的集合,通常是应用中某些功能的具体实现或者对系统已有功能的增强或补充。对Android开发者而言,最常见的莫过于是Support Library,另外就是我们经常使用各种网络请求库(OkHttp,Volley),数据库操作,图片加载库(Glide,ImageLoader)等.

什么是Framework

Framework即我们所说的框架,通常是系统或者应用的骨架,很多时候,它表现为一组抽象的构建及构件实例间交互的方法.因此,可以认为,Framework规定了应用的体系结构,阐明了整体设计,写作构件之间的依赖关系以及控制流程。注意此处的Framework并不完全等同于你所熟知的Android Framework框架,可以认为Android Framework中体现了Framework的思想,并进行了实现。

什么是API

API是Application Programming Interface,又称为应用编程接口,是软件系统不同组成部分衔接的约定。更加通俗的说就API就是我们常见和编写的方法或函数.
 

 

 

 

二、SDK设计 模块化开发

根据单一职责将系统拆分为不同的小模块,每个模块保持相对独立。

模块之间通过协议或接口通信,以减少相互之间的依赖耦合.模块内部按照设计的几大原则进行实现,以保证模块本身可以灵活实现对于现代开发而言,模块化是常用的手段,从宏观角度来看,模块是系统最小的组成单元.

组件化开发

组件是对逻辑的封装,并具备单个可移植性.比如可以把日志记录做成一个组件,之后它可以被轻松在应用在不同的项目中。对于android 开发者而言,Android 提供的每个UI 控件同样也是组件,比如Button,TextView等。

所谓的组件化就是将整个项目划分成多个模块,几个模块或者单个模块作为一个组件,开发过程中我们可以对每个组件进行并行开发,最后发布时通过依赖将组件合并成完整的应用。

SDK整体框架划分,最好分为四层 API功能接口层

该层是对外提供接口,面向游戏开发者的,提供SDK的功能接口,如常见的初始化、登录、支付、绑定、订阅、数据上报、显示浮窗、隐藏浮窗、退出等。这里的接口设计需要注意的地方就是,对外的接口一旦对外提供,就尽量不要修改,且该层的代码不要混淆处理,所以在该层的代码不要做逻辑实现,避免被篡改。

业务逻辑层

该层是SDK对接API层的,是不同project项目的实现层,在这里通过project配置文件来配置不同的项目。API层持有Project的引用,通过配置,选择不同的项目project实现。多个项目时,每个项目都有不同的业务逻辑,不同的功能实现,对应的API接口是不变的,这时就可以通过配置来切换不同的Project,在不改变接口的情况实现换SDK包的功能。

功能逻辑层

该层是SDK的功能实现层,是SDK的核心层,对接Project层的,为不同的Project项目提供功能接口。这里采用组件化的思想,细分为各个功能组件,每个组件之间是相互独立的,方便后续业务量大之后将组件抽离处理,单独做成一个独立的项目。如登录SDK、支付SDK等。

注意:这里的功能不做任何的业务逻辑,只做功能实现,业务逻辑放到project层处理,通常与服务的交互也会在这层处理。

基础库

该层是整个SDK的基础,封装通用的基础功能,网络库、数据解析、日志输出、IO流、文件加解密等。这里的基础库,会封装一些流行的框架,需要注意的是,流行的框架几年会有被淘汰的风险,所以尽量做封装处理,不然替换一个框架,上层的SDK都需要修改。
PS:基础库的话,建议分为业务基础库和框架基础库、UI基础库,方便后续的隔离和替换。避免后续基础库越来越臃肿。而且基础库不要轻易修改,不要轻易修改。切记!

 

总结:

Sdk架构设计尽量满足模块化、组件化。开发时,从抽离、独立各个业务层做起,尽量分清层次,来提高项目层次感,避免代码臃肿,提高代码阅读性以及单元测试,降低维护难度。


 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。