各位戰士,歡迎來到第二十九天的戰場。至此,我們已經建立了一套強大的、多層次的性能防護體系:StrictMode
在開發時監督我們,Macrobenchmark
為我們提供了客觀的性能標尺,而 CI/CD 則將這一切自動化,防止性能衰退。
但這一切,都發生在我們的「實驗室」裡——在我們配置的模擬器或測試設備上。真實的世界遠比實驗室複雜:
我們的應用程式在這些真實、惡劣的環境下表現如何?這就是真實使用者監控 (Real User Monitoring, RUM) 要回答的問題。今天,我們將整合 Firebase Performance Monitoring,這個由 Google 提供的強大 RUM 工具,來收集來自真實戰場的情報。
它是一個 SDK,當你將它整合進你的應用程式後,它會自動地從你全球的使用者設備上收集關鍵的性能數據,並將這些數據匯總到 Firebase 的雲端後台,以清晰的圖表呈現給你。
你不需要寫一行程式碼,就能自動開始收集以下情報:
Activity
) 的緩慢轉譯影格和凍結影格的比例。這能直接告訴你,哪個畫面是使用者眼中最卡頓的。它能幫你回答一些至關重要的問題,例如:「我們新版本發佈後,巴西使用者的冷啟動時間真的改善了嗎?」或者「為什麼『搜尋結果頁』的卡頓率遠高於其他頁面?」
Firebase Performance 的整合過程極其簡單,幾乎是「零成本」的。
前置作業:確保你的專案已經在 Firebase Console 中建立,並且你的 Android 應用已經與之關聯(通常是透過 google-services.json
檔案)。
添加依賴:修改你的 build.gradle.kts
(或 build.gradle
) 檔案。
// 專案層級的 build.gradle.kts
plugins {
// ...
// 添加 Google Services Plugin
id("com.google.gms.google-services") version "4.4.1" apply false
}
// 應用程式層級的 build.gradle.kts
plugins {
// ...
// 應用 Google Services Plugin
id("com.google.gms.google-services")
// 應用 Firebase Performance Plugin
id("com.google.firebase.firebase-perf")
}
dependencies {
// 引入 Firebase BOM (物料清單),統一管理版本
implementation(platform("com.google.firebase:firebase-bom:33.1.0"))
// 添加 Performance Monitoring 的 KTX 依賴
implementation("com.google.firebase:firebase-perf-ktx")
}
完成了。
是的,你沒看錯。只需要添加這幾行 Gradle 設定,重新建構並發佈你的應用,Firebase Performance 就會開始自動收集上述的三大類數據。你無需在你的 Kotlin/Java 程式碼中做任何事情。
進階偵查:自訂追蹤 (Custom Traces)
除了自動收集的數據,我們還可以手動監測應用中特定程式碼區塊的執行時間。這被稱為「自訂追蹤」。
適用場景:
測量使用者從點擊「上傳」按鈕到上傳成功的完整流程耗時。
測量本地資料庫一次複雜查詢和資料處理的耗時。
測量一張複雜圖片載入並套用濾鏡的總耗時。
如何使用?firebase-perf-ktx
函式庫提供了非常優雅的 trace
擴充套件函式。
import com.google.firebase.perf.ktx.performance
import com.google.firebase.perf.ktx.trace
import com.google.firebase.Firebase
suspend fun processAndUploadImage(imageUri: Uri) {
// 啟動一個名為 "image_upload_process" 的自訂追蹤
Firebase.performance.trace("image_upload_process") {
// ... 你的程式碼 ...
val processedImage = processImage(imageUri) // 步驟一:處理圖片
// 你還可以添加自訂的指標,例如記錄圖片大小
incrementMetric("image_size_kb", processedImage.sizeInKb)
uploadImageToServer(processedImage) // 步驟二:上傳圖片
}
}
現在,image_upload_process
這個區塊的執行時間,就會被從全球使用者那裡收集起來,匯總到你的 Firebase 後台。
數據收集幾小時後,你就可以登入 Firebase Console,進入「Performance」分頁,查看你的戰報。你會看到:
清晰的儀表板,展示了應用啟動時間的趨勢圖,並可以按國家、設備、App 版本等維度進行篩選。
一張表格,列出了你應用中所有畫面的緩慢/凍結影格比例,讓你一眼就看出哪個畫面問題最嚴重。
一張網路請求表格,列出了最慢的 API 端點。
你建立的所有自訂追蹤的性能報告。
這些來自真實世界的數據,將為你下一步的優化工作提供最寶貴的指導。如果數據顯示 90% 的卡頓都發生在 SearchActivity
,那麼你就知道,下一次的「軍事行動」,目標就是它。
今天,我們將性能監控的觸角從「實驗室」伸向了「真實世界」。
我們認識到真實使用者監控 (RUM) 的重要性,它彌補了本地測試與真實場景之間的差距。
我們學會了如何輕鬆整合 Firebase Performance Monitoring,實現對應用啟動、畫面轉譯、網路請求的自動化監控。
我們掌握了使用自訂追蹤來測量特定業務邏輯性能的方法。
Firebase Performance 讓我們從「我認為這裡可能慢」,轉變為「數據告訴我這裡就是慢」。它為我們的性能優化工作提供了最終的、由真實使用者驅動的決策依據。
至此,我們已經學習了所有新的工具和戰術。明天,這場長達 30 天的戰爭將迎來最終的收官。我們將發布【終戰詔書】,回顧整場戰爭,總結我們的勝利果實,並確立一套可以持續作戰的、永不眠的性能優化流程。
我們明天,也是最後一天見!