一、SDK簡(jiǎn)介
SDK全稱 Software Development Kit,即軟件開發(fā)工具包。通常是輔助開發(fā)某個(gè)軟件而抽出剝離的特定功能軟件包。與App開發(fā)的不同,SDK通常更偏向功能的開發(fā)實(shí)現(xiàn),App則是從用戶層面到業(yè)務(wù)邏輯,全程處理用戶的行為。
二、SDK核心原則
- 穩(wěn)定性: 崩潰率≤4‰
SDK作為嵌入在App里面的一部分,可能會(huì)被多個(gè)App集成使用,這必須要求SDK性能穩(wěn)定,沒(méi)有崩潰。通常開發(fā)中,多做一些校驗(yàn)判斷,以及可能出現(xiàn)異常的地方進(jìn)行捕獲(注意線程內(nèi)部產(chǎn)生的異常,需要在線程內(nèi)部進(jìn)行捕獲)。
通常業(yè)界App的崩潰率在4‰左右,提供代碼質(zhì)量是一方面,增加線上異常捕獲是一方面。通過(guò)線上異常的反饋,迭代修復(fù)增進(jìn)穩(wěn)定性。
2.安全性:無(wú)安全風(fēng)險(xiǎn)、遵守規(guī)范
SDK必須沒(méi)有安全風(fēng)險(xiǎn),如注入、包含病毒、違反隱私規(guī)范等可能導(dǎo)致App被應(yīng)用市場(chǎng)下架的風(fēng)險(xiǎn)。
常見(jiàn)的如:js注入風(fēng)險(xiǎn),上架GP等應(yīng)用市場(chǎng)可能需要遵守相關(guān)規(guī)定,海外市場(chǎng)如安全隱私條例等。
3.高性能:內(nèi)存占用小、無(wú)經(jīng)常性卡頓
一些公司對(duì)上線產(chǎn)品有嚴(yán)格的性能檢測(cè)指標(biāo),對(duì)于集成的SDK也有相應(yīng)的標(biāo)準(zhǔn)要求。SDK盡可能的占用較小的內(nèi)存,不會(huì)造成性能的卡頓等。
4.體積小:減少或避免直接依賴三方庫(kù)
SDK包要小而精,避免造成接入方包體積過(guò)程。包體積過(guò)大,下載耗時(shí)長(zhǎng),不利于廣告轉(zhuǎn)化。
策略:盡量不依賴第三方開源庫(kù)(可以進(jìn)行功能裁剪接入)、 使用混淆等
5.對(duì)外接口要求
5.1 簡(jiǎn)單易用性
接口盡量簡(jiǎn)單,接口數(shù)量不會(huì)太多。減少使用方集成接入成本。
5.2 命名規(guī)范統(tǒng)一
命名除了編碼上的命名規(guī)范,所見(jiàn)即所得外,最好形成統(tǒng)一的風(fēng)格,能一眼看出是哪家廠商的SDK,好的規(guī)范能形成口碑,促進(jìn)提升品牌效應(yīng)。
5.3 跨端接口盡量保持一致
對(duì)于同一套SDK,盡量保持各端的接口命名、實(shí)現(xiàn)邏輯一致,減少接入過(guò)程中的困惑,減少技術(shù)支持成本,給人較好的接入體驗(yàn)。
5.4 接口兼容性:新老接口的兼容、新功能兼容
新版本盡可能的兼容老版本,避免已經(jīng)集成的開發(fā)者在接入新版本后,出現(xiàn)問(wèn)題,提高新版本的推進(jìn)鋪量速度。
6.高健壯性、高魯棒性
要盡可能的提高程序的健壯性、魯棒性。對(duì)于依賴服務(wù)端、開發(fā)者、或用戶配合的各種環(huán)境,我們要有各種冗長(zhǎng)兜底的邏輯,假定各種依賴環(huán)境異常,我們也務(wù)必要保證程序的穩(wěn)定性,盡可能的采用兜底方案,減少對(duì)業(yè)務(wù)的損失。
三、SDK集成與維護(hù)
1.集成方式:靈活多樣
SDK集成方式盡可能靈活方便。對(duì)于Android,可以采用maven,gradle依賴引入,或者直接提供jar、aar包來(lái)集成。
2.集成指南
對(duì)于SDK的集成步驟,使用步驟,版本更新說(shuō)明,API接口介紹等,應(yīng)用詳細(xì)的文檔說(shuō)明。常見(jiàn)的官方文檔包括:
- 概要
- 集成前準(zhǔn)備
- 獲取SDK
- 初始化
- 使用說(shuō)明
- 測(cè)試說(shuō)明
- 集成建議&常見(jiàn)問(wèn)題
- changeLog
- 其他須知
3.集成測(cè)試
可以提供檢測(cè)集成工具,幫助開發(fā)者檢驗(yàn)是否正確接入?;蛘弑匾臏y(cè)試步驟以及結(jié)果說(shuō)明引導(dǎo)開發(fā)者完成集成測(cè)試。
四、SDK開發(fā)經(jīng)驗(yàn)
1.埋點(diǎn)要全
對(duì)于SDK內(nèi)部的各種行為,流程,盡可能的加入埋點(diǎn)。通過(guò)埋點(diǎn),為業(yè)務(wù)方數(shù)據(jù)分析提供支持。
2.靈活配置化:鋪量至少2周
SDK由于需要App的集成,依賴App的發(fā)版周期,導(dǎo)致鋪量時(shí)間長(zhǎng)。所以對(duì)于SDK內(nèi)的業(yè)務(wù)支持,盡可能采用靈活的方式實(shí)現(xiàn),如配置化,H5化。
3.SDK架構(gòu)圖
架構(gòu)圖畫的比較簡(jiǎn)單,有一點(diǎn)點(diǎn)問(wèn)題,如bid模塊的存儲(chǔ)地方,暫不修改,僅供參考
