廣告SDK開發(fā)經(jīng)驗(yàn)總結(jié)

一、SDK簡(jiǎn)介

SDK全稱 Software Development Kit,即軟件開發(fā)工具包。通常是輔助開發(fā)某個(gè)軟件而抽出剝離的特定功能軟件包。與App開發(fā)的不同,SDK通常更偏向功能的開發(fā)實(shí)現(xiàn),App則是從用戶層面到業(yè)務(wù)邏輯,全程處理用戶的行為。

二、SDK核心原則

  1. 穩(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ǔ)地方,暫不修改,僅供參考


架構(gòu).png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 相比于APP的開發(fā),SDK的開發(fā)有些不同:1、拓展性要求更高:SDK需要對(duì)外提供接口,無(wú)論是迭代還是重構(gòu),原有接口...
    張明云閱讀 1,887評(píng)論 0 5
  • 做SDK開發(fā)很久了,這里備注下日常開發(fā)中的幾個(gè)常規(guī)項(xiàng)。對(duì)于有經(jīng)驗(yàn)的開發(fā)都來(lái)說(shuō),這篇文章沒(méi)有任何意義。如果你不小心走...
    秦磚閱讀 1,774評(píng)論 3 8
  • 在公司做了兩年多的 SDK 開發(fā),結(jié)合自己的所知所學(xué),分享一些 SDK 開發(fā)的經(jīng)驗(yàn)。 1. SDK 是什么 相信做...
    落英墜露閱讀 2,158評(píng)論 0 3
  • 原文: SDK開發(fā)過(guò)程的一些問(wèn)題總結(jié) 過(guò)去的一年多時(shí)間里都在做SDK, 這一年從Web開發(fā)轉(zhuǎn)到Android開發(fā)也...
    erichua23閱讀 20,798評(píng)論 4 10
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂(lè)有人憂愁,有人驚喜有人失落,有的覺(jué)得收獲滿滿有...
    陌忘宇閱讀 8,822評(píng)論 28 54

友情鏈接更多精彩內(nèi)容