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