泛談android 第三方SDK設(shè)計(jì)(聊天語錄)

sdk就是把你的app代碼抽出來蚁鳖,形成一個(gè)依賴庫
以aar或者jar形式提供給app依賴用
涉及到插件化的時(shí)候 依賴會比較復(fù)雜
其它和app開發(fā)沒什么區(qū)別了

抽離代碼的時(shí)候注意業(yè)務(wù)抽象
比如游戲SDK 業(yè)務(wù)抽象后,大致就三個(gè)接口
初始化 登錄 支付
最后就是依賴庫和app的接口通訊
一般有兩種方式通訊
一個(gè)是用activity的result 回調(diào)
二是用接口callback
涉及activity的盡可能用activity去回調(diào)
不涉及界面的一般都用接口回調(diào)
用callback的好處是可以控制app的邏輯
app在任何場景收到callback都會執(zhí)行既定邏輯
比如SDK要切換賬號音五,直接用callback就能打破app的運(yùn)行邏輯 強(qiáng)行切換賬號
用activity的result就不行了辣恋,不能保證那個(gè)activity還活著
用全局callback的壞處是 內(nèi)存全局占用一個(gè)或多個(gè)callback亮垫,消耗內(nèi)存,還有一個(gè)問題是何時(shí)finish sdk的activity伟骨,何時(shí)用callback觸發(fā)回調(diào)
手動處理內(nèi)存回收
容易導(dǎo)致很多情況收不到callback 比如某些動作取消卻沒回調(diào)饮潦,導(dǎo)致app一直處于被動狀態(tài)
遇到跨進(jìn)程的可能會更麻煩點(diǎn),這種場景一般就需要兩個(gè)sdk,把跨進(jìn)程的邏輯封裝掉 降低接入方的接入成本
接口易用性携狭,業(yè)務(wù)解耦性
所有的目的都是易用性
要簡單好用继蜡,app和sdk業(yè)務(wù)解耦
使用者不需要關(guān)心sdk到底做了啥,只管輸入輸出
而且一定要非常簡單的接入 用起來很簡單
開發(fā)人員不需要管SDK內(nèi)部干了啥逛腿,只需要接入
以及提供什么參數(shù)給SDK稀并,剩下的SDK處理
大部分情況 無非就是各種callback
一個(gè)靜態(tài)類作為接口類,或者單例作為接口類
做的復(fù)雜點(diǎn) 就是我這種插件化 多SDK 公用一個(gè)接口

接口設(shè)計(jì)還有一些小技巧
不能直接給人家一個(gè)demo 讓人家拷貝什么的
要封裝成baseActivity 暴露抽象方法 讓app繼承這個(gè)BaseActivty實(shí)現(xiàn)抽象方法 SDK的業(yè)務(wù)流程都寫在base里面
SDK的使用者實(shí)現(xiàn)的activity只有寥寥數(shù)個(gè)抽象方法的實(shí)現(xiàn)单默,其它業(yè)務(wù)流程一概不管
遇到復(fù)雜的業(yè)務(wù)碘举,在BaseActivty中提供一個(gè)被代理過的callback給實(shí)現(xiàn)者,讓實(shí)現(xiàn)者用callback回調(diào)
實(shí)現(xiàn)者回調(diào)時(shí)搁廓,callback的代理代碼會執(zhí)行后續(xù)動作
簡單說就是callback的嵌套了
想套幾層套幾層 一般業(yè)內(nèi)規(guī)范是不超過兩層
多了后面接手的人看不懂
然后結(jié)合一些設(shè)計(jì)模式 讓代碼優(yōu)秀一點(diǎn)
其它的和app一樣了
什么性能優(yōu)化引颈、內(nèi)存泄露
耗時(shí)任務(wù)優(yōu)化,耗時(shí)的 mearuase draw layout什么的
windows的背景疊層什么的
一般SDK 應(yīng)該責(zé)任單一 境蜕,性能方面蝙场,影響很小
責(zé)任不單一的SDK就該分成兩個(gè)SDK
以上情況不涉及NDK。粱年。

記錄下來

避免白說這些 將來作為博客素材
其實(shí)SDK開發(fā)更應(yīng)該關(guān)注的是會遇到什么坑

這才是和APP開發(fā)有本質(zhì)區(qū)別的地方

我經(jīng)常被坑折磨的死去活來

最后發(fā)現(xiàn)什么技術(shù)也沒學(xué)到

可能就是學(xué)到這些坑

將來換工作 也就這些坑有點(diǎn)競爭力吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末售滤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子台诗,更是在濱河造成了極大的恐慌完箩,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拉庶,死亡現(xiàn)場離奇詭異嗜憔,居然都是意外死亡秃励,警方通過查閱死者的電腦和手機(jī)氏仗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人皆尔,你說我怎么就攤上這事呐舔。” “怎么了慷蠕?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵珊拼,是天一觀的道長。 經(jīng)常有香客問我流炕,道長澎现,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任每辟,我火速辦了婚禮剑辫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘渠欺。我一直安慰自己妹蔽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布挠将。 她就那樣靜靜地躺著胳岂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪舔稀。 梳的紋絲不亂的頭發(fā)上乳丰,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機(jī)與錄音内贮,去河邊找鬼成艘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛贺归,可吹牛的內(nèi)容都是我干的淆两。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拂酣,長吁一口氣:“原來是場噩夢啊……” “哼秋冰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起婶熬,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤剑勾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后赵颅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虽另,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年饺谬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捂刺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖族展,靈堂內(nèi)的尸體忽然破棺而出森缠,到底是詐尸還是另有隱情,我是刑警寧澤仪缸,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布贵涵,位于F島的核電站,受9級特大地震影響恰画,放射性物質(zhì)發(fā)生泄漏宾茂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一拴还、第九天 我趴在偏房一處隱蔽的房頂上張望刻炒。 院中可真熱鬧,春花似錦自沧、人聲如沸坟奥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爱谁。三九已至,卻和暖如春孝偎,著一層夾襖步出監(jiān)牢的瞬間访敌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工衣盾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寺旺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓势决,卻偏偏與公主長得像阻塑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子果复,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容