溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

打造百億量級、億級日活SDK的十大關(guān)鍵要點

發(fā)布時間:2020-08-17 15:24:07 來源:ITPUB博客 閱讀:115 作者:個推2018 欄目:移動開發(fā)

一個好的SDK應(yīng)該具備易用性、穩(wěn)定性、輕量、靈活的特點,而個推作為國內(nèi)第三方推送市場的早期進入者,一直致力于為開發(fā)者提供高效穩(wěn)定的推送SDK。

經(jīng)過十年的深耕與創(chuàng)新,個推夯實了行業(yè)地位。截止2019年6月,個推SDK累計安裝量超440億,日活獨立設(shè)備數(shù)達4.3 億,并成功服務(wù)了人民日報、新華社、微博、馬蜂窩、酷我音樂等一系列明星APP。輝煌數(shù)據(jù)的背后是強大的技術(shù)支撐。

這期文章,我們特地采訪了個推Android 資深開發(fā)敬瑜,以個推推送SDK為例,來聊聊打造大型SDK的關(guān)鍵技術(shù)點。

作者 個推Android 資深開發(fā) 敬瑜

01 開發(fā) SDK 和 開發(fā)APP 有什么聯(lián)系?

APP 和 SDK兩者關(guān)系密切,APP是SDK的主要載體, SDK 則是 APP開發(fā)所需的重要工具。從研發(fā)者的角度來看,SDK開發(fā)和 APP開發(fā)均屬于 Android 頂層應(yīng)用開發(fā),并無本質(zhì)區(qū)別,兩者的目的均是要提供產(chǎn)品給客戶使用;但從商業(yè)角度來講,APP 是to C 的產(chǎn)品,用戶是廣大群眾;而 SDK 則是to B 的產(chǎn)品,用戶為廣大開發(fā)者,兩者在運營模式上有所不同。

02 SDK 開發(fā)最關(guān)鍵的點是什么?

SDK沒有UI交互,用戶使用 APP 時并不會感知到SDK 的存在。但是作為APP的重要部分,SDK的性能直接影響著APP的性能,也間接影響著用戶在使用APP時的體驗和感受??偨Y(jié)個推推送SDK的開發(fā)經(jīng)驗,我們認為SDK開發(fā)最需要注意的是其穩(wěn)定性。

作為一款第三方 SDK,穩(wěn)定性是第一要素,我們要保證推送SDK在不同環(huán)境下(APP、終端設(shè)備等)都能正常運行。要想保障穩(wěn)定性,復雜環(huán)境的兼容是關(guān)鍵。減少使用非 SDK 接口也有助于提升穩(wěn)定性。

除了穩(wěn)定性外,以下幾個問題對于打造優(yōu)質(zhì)SDK也很重要。

03 SDK 版本適配以及廠商兼容情況如何?

個推 SDK 支持 Android 端和 iOS 端,以下文章均使用 Android 端來舉例。

截止目前,Android 系統(tǒng)從07年發(fā)布第一版至今,經(jīng)歷了多次迭代,Android Q為其最新版本。個推Android SDK 支持 Android 2.3及以上版本,幾乎可以在市面上現(xiàn)存的所有Android 版本上運行。

** 1)版本適配**
APP 主要在手機上運行,若想 APP 在 Pad、電視之類的智能設(shè)備上運行,則基本需要單獨適配,也就是說,APP 會根據(jù)其使用環(huán)境調(diào)試相應(yīng)的版本。而 SDK 的運行環(huán)境相對復雜,我們根本不知道自己開發(fā)的 SDK 會在什么樣的環(huán)境下運行,可能是手機、Pad、電視,也可能是車載設(shè)備,甚至是冰箱等智能家居設(shè)備。這類設(shè)備的 Android 系統(tǒng)版本從 2.3至10.0 不等。我們在開發(fā)SDK 的時候需要盡量地向下兼容。為此,個推推送 SDK 依舊保留著對 Android 2.3 系統(tǒng)的兼容。

** 2)廠商兼容**
一個成熟的 SDK 勢必要保證在不同的廠商設(shè)備上正常運行,尤其是當SDK 內(nèi)部涉及到Android 四大組件時需要特別注意廠商的兼容性,注意其是否會限制固定 action 的廣播使用及限制固定類名 service 的啟動。而如果 SDK 開發(fā)涉及到 Android framewrok 的引用,某些功能可能會失效。比如AndFix 的底層實現(xiàn)依托于 Art/Dalvik 虛擬機的架構(gòu),但是大部分廠商會對虛擬機進行定制,修改底層 ArtMethod 結(jié)構(gòu),這時,AndFix將無法在修改過虛擬機的設(shè)備上生效。

所以在 SDK 開發(fā)過程中我們要盡量避免Android Framework 的引用。個推在使用Android 四大組件的時候,會要求開發(fā)者提供自定義 Service,其Service 只需要繼承個推默認的即可,這樣可以保證 SDK 在不同廠商上均能正常運行。

04 怎么看待現(xiàn)在市面上的 SDK廣泛支持多混合開發(fā)這一現(xiàn)象?

大前端開發(fā)是必然的趨勢,現(xiàn)在新推出的產(chǎn)品會優(yōu)先使用混合開發(fā),保證一套代碼可以在多個終端上運行。因此,一個成熟的 SDK 有必要對不同的語言框架進行適配。目前,個推 SDK 不僅支持 Android、iOS系統(tǒng),還支持混合開發(fā),如unity3d cocos2dx react-native flutter cordova apicloud等。具體見 個推實驗室

05 Android SDK 是否會使用開源項目?

不會使用。
有以下幾點考慮:

  • 使用開源項目會增加包的體積;
  • 不能保證開源項目支持復雜的終端環(huán)境;
    -客戶的 APP可能已使用開源項目,將導致編譯失敗;

06 如何適配海外市場環(huán)境?

開拓Google Play 市場是各大互聯(lián)網(wǎng)公司的長遠規(guī)劃之一。個推Android SDK Google Play版本自發(fā)布以來,積極適配復雜的海外環(huán)境,為海外App消息的穩(wěn)定下發(fā)提供強大的支撐和保障。為了有更好的用戶體驗,個推推送 SDK 還在國外眾多地方布置了機房,以保證推送的到達率。另外,個推推送SDK還需要對 Google Play 制定的各種規(guī)則進行適配,以及還要考慮不同國家不同版本機型的適配問題。這要求我們在開發(fā)過程中盡量使用 Google 生產(chǎn)的手機進行調(diào)試與測試。

07 SDK 如何降低手機電量、流量的消耗?

為了給用戶更好的使用體驗,我們會盡可能地降低SDK對電量以及流量所造成的消耗。為此,我們不會使用藍牙這類電量消耗較高的工具。此外,我們還會采用多鏈路合并技術(shù)來節(jié)約流量。

為了準確地了解所耗電量、流量的降低情況,我們還會做一個全面的測試。每次發(fā)版之前,我們都會采用嚴格的測試標準,使用特定的 APP 進行電量壓測。為了盡可能地排除外來因素的干擾,保證測試的準確性,我們往往會使用集成了個推推送 SDK 的 APP來測量。常見測量 APP 的方式有Batterystats & bugreport和Battery Historian。具體細節(jié)可以自行查閱 PowerProfile.java 和 power_profile.xml 的使用與原理。

08 如何自主檢測 SDK 的異常?

經(jīng)過近 10 年的優(yōu)化與升級,個推推送 SDK 的異常情況已經(jīng)控制在一個非常非常低的水平,但因為 Android 市場碎片化非常嚴重,SDK 在如此碎片化的環(huán)境下運行難免會出現(xiàn)各種意想不到的突發(fā)情況,為此我們專門開發(fā)了SDK運行自查系統(tǒng),類似于精簡版的 bugly。該內(nèi)部產(chǎn)品與 SDK 相輔相成,可以自主檢測 SDK 的異常情況,并在發(fā)現(xiàn)異常后主動上報。其次,在代碼層面,我們也做了一些防控,避免 SDK 因為異常而導致無法正常使用。另外,我們還成立了技術(shù)支持團隊,服務(wù)廣大的開發(fā)者,定期回訪客戶,幫助解決客戶遇到的問題。

09 開發(fā)SDK還有什么是需要注意的么?

SDK開發(fā)過程中,我們還需要注意安全性。安全性不僅僅代表網(wǎng)絡(luò)數(shù)據(jù)交互的安全、本地數(shù)據(jù)存儲的安全,也涉及到 SDK 的加固、混淆、第三方安全軟件審核。舉例來說,個推 Android SDK 提供了四大組件的對接,SDK 內(nèi)部會特別注意,避免這些組件被反序列化攻擊。為了讓開發(fā)者更加放心地使用我們的SDK,我們公司內(nèi)部建立了嚴格的安全管理機制,來保障SDK的安全性。

10 對 SDK 開發(fā)者有何建議?

其實從 Android APP 誕生開始,SDK 的開發(fā)就從未中斷過。SDK 開發(fā)者與 APP 開發(fā)者的工作內(nèi)容基本相同,但是開發(fā) SDK 更注重對 Java 語言以及 Android 底層的理解。如果大家想從事Android SDK 開發(fā),建議多研究 Java 的相關(guān)知識,深入理解 Android framework 層。

開發(fā)SDK并不難,難的是如何讓自己開發(fā)的 SDK 在復雜的環(huán)境下穩(wěn)定運行。這需要我們對 SDK 的架構(gòu)有一個比較清晰的認知,并對前文所提到的問題進行認真思考。

多年來,個推 SDK始終以服務(wù)開發(fā)者為己任,持續(xù)為用戶提供優(yōu)質(zhì)的體驗。為了進一步提升推送后臺的保活能力,個推已發(fā)布 2.13.3.0版本,并對 Android Q 進行了適配,請前往個推文檔中心下載http://docs.getui.com/download.html,即刻體驗。

打造百億量級、億級日活SDK的十大關(guān)鍵要點

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI