构建SDK项目开发分享

来源:互联网 发布:西游记解读知乎 编辑:程序博客网 时间:2024/06/06 02:01

构建SDK项目开发分享

1、sdk简介

sdk字面意思是Software Development Kit,也就是软件开发工具集合。就是一个工具包,里边包含了所有我们要提供给第三方接入,或者是方便开发的资源,或者说是接口。通过接口可以很方便的实现一些功能。

2、sdk 分类

sdk按功能分类可以分为:* 工具类sdk:比如android sdk,jdk等等都属于工具类* 服务类sdk:比如讯飞sdk,腾讯im sdk等等如果按照通信方式来分:*跨进程通信类sdk:比如需要在应用之间进行通信或者说是应用之间的一个纽带。(调用微信的分享功能,或者手机的打电话,发短信,相机等等,都属于是跨进程通信)*单一进程sdk,或者说主线程sdk:该sdk大部分是工具类sdk,用来提供某些独立的功能,比如统一的网络管理,文件管理,文本格式化。android中使用这个类型的sdk是最多的。因为现在的第三方的框架都属于这个类别。

3、sdk开发流程

java中要求程序的结构与sdk中的结构基本相同。要求程序类都是高内聚,低耦合,尽量降低sdk集成的简单性。通过统一的接口来进程sdk的访问工作。
根据上边所提到的sdk的种类可以大体的绘制一下不同的sdk的开发流程。

跨进程通信类sdk
这里写图片描述

跨进程sdk主要流程是服务端通过统一的接口实现类来提供服务。接口实现类使用单例保证程序运行过程中的唯一性。客户端通过sdk提供的接口来调用service中接口所提供的功能。通过android的IPC机制来完成通信。服务类sdk都需要提供错误回调机制,提交错误监听。可以有必要的工具类以及其他需要在客户端用到的Model类。

单一进程sdk
这里写图片描述

单一进程sdk主要是通过sdk来提供所需要的的功能,不需要服务端来进行配合,使用起来简单。按需来添加回调监听。可以有必要的工具类以及其他需要在客户端用到的Model类。

4、结合擎话讯飞的sdk详细介绍跨进程sdk项目流程

sdk的开发:1、确认sdk需求2、确认sdk类别3、按需求文档编写错误码,以及初始接口文档4、根据sdk类别创建sdk流程图(如果需要时间控制可以绘制时序图)5、按流程图编写sdk的整体结构,创建接口类以及接口实现类,错误码类,回调监听接口以及实现类6、创建IPC通信服务类(android 使用Binder进行通信,aidl是通信接口类,Ipc通信使用Parcelable进行数据传输)7、客户端通过bing IPC服务类进行连接,然后进行通信,获取想应服务。8、服务端对要提供的服务进行真正的实现,以及功能执行过程中的异常处理,执行失败以及成功的回调处理。9、完善接口文档,提供(sdk + sdk使用Demo)使用以及接口文档

擎话sdk代码接口

根据分析擎话讯飞sdk为跨进程sdk,然后根据接口编写初始接口文档

创建流程图

这里写图片描述

根据上图创建需要的类,然后Client 通过QHServiceManager进行初初始,绑定远程服务,通过擎话App的远程服务提供最QHSercie来提供服务,服务最终实现在QHServiceInterfaceIml类中。

import com.qinghua.car.aidllibrary.OnServiceListener;/** * Created by chenpengfei on 17/5/31. * 远程服务接口 */public interface QHServiceInterface {    // 打开app。    public void startApp();    // 进入第几个直播间。    public void enterRoom(String tipmsg,OnServiceListener listener);    // 上一页 - 首页展示主播    public void pageUp(OnServiceListener listener);    // 下一页 - 首页展示主播    public void pageDown(OnServiceListener listener);    // 呼叫擎话小秘。    public void callCustomService(OnServiceListener listener);    // 主播间 送礼 玫瑰花金话筒。    public void sendGift(String giftName,OnServiceListener listener);    // 直播间 留言    public void leaveMessage(long dur,String filePath,OnServiceListener listener);    // 直播间换台 - 上一个    public void livePrevious(OnServiceListener listener);    // 直播间换台 - 下一个    void liveNext(OnServiceListener listener);    //退出直播间    void exitRoom(OnServiceListener listener);}

上边的所有工作都是为了最后功能实现所做的准备。
所以一个跨进程sdk的核心工作就是跨进程服务的连接 + 服务端最终功能实现。

最终接口开发完毕以后开发人员通过接入sdk来验证功能的完整性,即Demo的编写。
方便cp接入的时候可以有参考的对象。