構建SDK項目開發分享

構建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接入的時候可以有參考的對象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章