移動端 SDK 開發經驗總結及梳理


做Android開發很多年了,多次思考過App開發和SDK開發在架構方面及其他各個方面的異同,以及各自方向開發時需要注意的事項。

下面是我個人對SDK開發的理解及相關經驗分享。

一、SDK 開發概念

SDK即Software Development Kit,通常是為輔助開發某類軟件,而編寫的特定的軟件包、框架集合。同App開發不同,一般我們開發的SDK為相對獨立的業務、擁有特定功能的工具集合,使用SDK的一般為B端的用戶,一般是集成SDK來實現相關功能的App端開發者,我們會以 代碼 + Demo + 文檔 的方式交付。

二、SDK 開發建議

1. 便於參考的Demo

集成 Demo 通常是一個簡單的 App,用來展示如何快速地接入 SDK。Demo 的源碼需要保證方便使用者參考,其版本變更策略和 SDK 版本的變化保持一致。它的開發原則也要與 SDK 一致,確保高質量的交付。

2. 方便查閱的文檔

接入文檔用來告訴 SDK 使用者,如何使用 SDK、詳細使用步驟和可能發生的問題。文檔內容包括:更新記錄、基本信息、API 說明、集成步驟、FAQ等。好文檔的標准就是清晰明了,通俗易懂。一個完全不懂 SDK 的開發者看着文檔就能對接,對於經常遇到的問題要逐條列出,專業名詞要有對應的解釋。

3. 慎用黑科技

開發SDK的人可以注意下以下幾個點:

  • 能用系統的API解決的,就不要使用第三方,減少對其他庫的依賴
  • 黑科技雖然好,但是能不用的就不要用
  • 多考慮第三方帶來的影響
  • 依賴其他SDK的,盡量別打包在一起
  • 能不用單例的就盡量少的使用
  • 核心代碼的安全性

三、SDK 開發要領

SDK是需要我們提供給其他開發者使用的,簡潔和高效的對接是非常有必要的。如果對接一個SDK很繁瑣,或者需要關心很多業務之外的問題,那么說明SDK的設計就是存在問題的。

1. SDK 易用性

SDK本身就是一些公用的代碼或者業務的集合,內部做了很多工作,實現了很多細節。 對於開發者而言,一個好的SDK應該是簡潔易用的,不應該花費太多時間去對接。通過閱讀Demo的代碼和文檔,就能對接好,才是SDK易用性的體現。

2. SDK 穩定性

我們必須要保證設計的SDK是穩定的,所以在SDK的設計及實現階段,最好做到以下幾點:

a). 盡量保證對外提供的API是穩定的,非特殊情況不要更改。

b). 必須要保證有穩定的業務支撐API的使用。

c). 盡可能屏蔽掉SDK的迭代過程,盡量讓用戶升級時只需要關注版本號即可,避免出現不必要的升級適配操作。

3. SDK 高性能

性能問題,無論是普通的SDK開發還是應用的開發,都需要考慮到。作為SDK的開發者,我們必須時刻注意到性能問題,否則會影響到接入SDK的App的整體性能。

一般的最需要關注的就是內存及電量這塊的使用情況。

a). 優化SDK的內存占用。一般 SDK 和 App 運行在同一進程,此時 SDK 要管理好自己占用的內存,合理分配,注意釋放,並避免出現內存抖動。

b). 優化電量消耗。盡量避免在后台運行一些不必要的服務,並優化SDK使用時的CPU使用情況。

四、SDK 設計規范

API 設計在任何開發中都非常重要,許多時候軟件的質量好壞體現在 API 的設計上。

在普通的應用開發中,API 只會在開發人員間流通,不會暴露給非本應用開發的其他人員。但是 SDK 作為一種服務,需要向開發者暴露一部分 API,這樣才能使用 SDK 的服務。

1. SDK 結構清晰

SDK提供給別人使用的時候,結構清晰非常重要,以下幾個點,可以供大家參考:

  • 文件組織方式清晰明了:給別人的SDK,解壓下來后第一眼就能夠分辨出每個文件夾是什么作用。資源文件,文檔,demo,庫,應該很容易進行區分。
  • 類名前綴和包命名或者縮寫要一致:一定要以正常思考方式進行命名或者縮寫。建議以駝峰命名方式。
  • 代碼風格一定要一致:不要讓人感覺接入過一個SDK,感覺到每一行代碼都是不同人操刀的。
  • 函數命名遵循共性,表明其用途:命名這個問題,每個人都有自己的一套,但自己。
  • 代碼注釋要規范和清楚:接入者不一定回去仔細看文檔,所以接口里面的注釋必須要認認真真寫。
  • API的訪問權限必須要控制:不應該出現一些不需要暴露出來的方法,必須控制好API的訪問權限,避免出現因此導致的未知異常。

2. SDK 方便調試

SDK提供給別人使用的時候,方便調試是很重要的,能減少對接過程中的問題反饋,以下幾點可以參考:

  • 可以對外提供當前SDK狀態的一些屬性:SDK應該提供一些方法和屬性,讓接入者知道SDK的當前狀態,但是絕對不能讓用戶直接設置這些狀態。
  • SDK功能正確:編譯無警告和錯誤,支持最新的特性,這是用戶自行調試解決問題的前提。
  • API調用簡單:SDK好用不好用,看調用API就感受出來了。
  • 便於調試:打印出SDK debug日志,給出一些提示性的信息,方便排查問題。
  • API回調參數明確:SDK調用完,需要在合理的實際給用戶結果,設計好這些也能便於用戶調試。

一般開發SDK是需要包含的輔助功能如下(這里指的是除去主業務功能之外的其他功能):

  • SDK使用日志系統,自由篩選不同日志。
  • Crash日志本地收集。
  • SDK版本控制系統,方便升級及排查問題。

以上這些功能不僅可以方便開發和調試,也提高了測試同學的效率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM