我們都了解效能很重要,因為會影響使用者體驗,也知道了 Android 是如何將效能優化,但真正要讓你的App 效能好,最重要的還是個人及團隊有沒有在 App 的開發上落實。把重視效能這件事帶進到你的團隊,從程式碼的開發、檢核、測試都將效能考量進來。我們就以持續整合與佈署的方式來達到將效能優化落實。
下圖是 Android 持續整合與佈署的流程,我們從 Code review、自動建置、自動測試、監控流程來看如何落實。
圖片來源:Android TDD 測試驅動開發
Code review 是提升程式碼品質很有效的方式,也是軟體開發的一個重要的環節。Code review 要檢核程式碼是否有錯誤及符合需求,效能也應在 Code review 的審查項目之一。例如可能造成 Memory leak 、Out of memory 的原因其實都是可以從 Code review 就看出端倪。
Jenkins 是一個功能強大的持續整合工具,有豐富的外掛可以供開發人員使用,可以將建置專案、測試、分析及部署等工作自動化,讓 App 工程師可以專注在開發及撰寫單元測試。當開發人員將程式碼合併到儲存庫時而無法編譯成功時,你可以馬上發現錯誤。越早發現,就越早修正。而 Android 的 Lint 程式碼檢查,可以找出影響效能的潛在問題。且 Lint 也可以用 Gradle 指令來執行,既然可以用指令執行,我們就可以將其加他 CI 流程裡自動化,確保不會有效能問題的程式碼被簽入至程式碼儲存庫。關於 Lint 請參考本系列使用 Lint 找出潛在的效能問題。
我們都知道可以寫測試來確保程式碼是沒有錯的且如你所想的。在你撰寫單元測試、UI 測試時,請把效能也一併考量進去。有些效能問題也許只發生在某些作業系統版本或手機廠牌,如果透過自動化測試也就更方便了。
單元測試:撰寫測試來衡量一個功能的執行時間。
UI 測試:執行某個操作的回應時間是否符合預期。
對於使用者使用 App 所遇到的問題,時所遇到的問題,我們必須透過工具監控並即時通知團隊,避免問題持續擴大。我們介紹了 Firebase performance、Google play vitals 這些監控效能的機制,幾乎不用寫程式就可以監控效能問題: ANR、網路請求效能、頁面顯示的效能。
要即時收到效能的異常通知,除了在 Firebase performance、Google play vitals 設定 Email 通知,也需要將其整合至像團隊通訊平台,例如 Slack,便可以在第一時間掌握效能問題。