分析應用程式效能

當應用程式回應速度慢、畫面顯示斷斷續續的、系統凍結或太耗電,都算是效能欠佳。修正效能問題,這些問題牽涉到辨識出應用程式低效率使用 CPU、記憶體、圖片、網路或裝置電池等資源的情況。

如要找到並修正這些問題,請使用接下來本主題要討論的分析和基準化工具及技術。想瞭解評估效能的方式,以及運用這些技術來解決特定問題的案例,請參考效能評估

Android Studio 提供的數種分析工具,可協助您找到並視覺化呈現潛在問題:

  • CPU 分析器可協助追蹤執行階段的效能問題。
  • 記憶體分析器可協助追蹤記憶體配置狀況。
  • 能源分析器會追蹤能源用量,可能會導致電池耗電。

這些工具與 Android 5.0 (API 級別 21) 以上版本相容。如要進一步瞭解各項工具,請在使用手冊中參閱本節的其他頁面。

應用程式可以利用 Jetpack Benchmark 程式庫評估許多重要作業:

  • Macrobenchmark:評估重要效能的使用案例,包括程式啟動及UI 動畫或畫面滾動等動作觸發的重繪動作。
  • Microbenchmark:評估特定函式的 CPU 使用率。

如要進一步瞭解上述程式庫,請參考「設定應用程式基準」頁面。

可分析的應用程式

Profileable 是 Android Q 版本導入的資訊清單設定。這項設定可用於指定裝置使用者是否能透過 Android Studio、Simpleperf 和 Perfetto 等工具分析這個應用程式。

profileable 導入之前,大多數開發人員都只能在 Android 分析可進行偵錯的應用程式,因此帶來效能成本大幅增加的副作用。這些效能成本可能會導致分析結果失效,尤其是與計算時間有關時更會如此。表 1 摘要說明了可進行偵錯和可分析應用程式間的差異。

表 1. 可偵錯和可剖析應用程式之間主要差異的摘要。
功能 可偵錯 可分析
記憶體分析器 已滿

否:

CPU 分析器 已滿

否:

網路分析器
電力分析儀
電源分析器
事件監測儀

我們推出了 Profileable,讓開發人員能選擇允許應用程式向分析工具公開資訊,同時產生極少的效能損耗。可分析的 APK 本質上即為發布版 APK 在資訊清單檔案的 <application> 部分加入一行 <profileable android:shell="true"/>

自動建構及執行可分析的應用程式

您只要按一下滑鼠,即可設定、建構及執行可分析的應用程式。這項功能需要使用搭載 API 級別 29 以上版本、且具備 Google Play 的虛擬或實體測試裝置。如要使用這項功能,請按一下「Profile app」圖示 旁邊的箭頭,然後在以下兩個選項間選擇:

只要按一下滑鼠,就能開啟可分析的建構選單。
  • 點選「Profile 'app' with low overhead」,系統會啟動 CPU 和記憶體分析器。在記憶體分析器中,只有「Record Native Allocations」處於已啟用狀態。

    以低附載的方式分析。
  • 點選「Profile 'app' with complete data」,系統會啟動 CPU、記憶體和能源分析器。

    使用完整資料進行分析。

手動建構及執行可分析的應用程式

如要手動建構可分析的應用程式,您需要先建構發布應用程式,接著更新其資訊清單檔案,將發布應用程式轉換為可分析的應用程式。設定可分析的應用程式後,請啟動分析器,然後選取一個可供分析的程序來剖析。

建構發布應用程式

如要建構發布應用程式以便進行分析,請按照下列步驟操作:

  1. 將下列程式碼新增至應用程式的 build.gradle 檔案中,以偵錯金鑰簽署應用程式。如果您已有運作中的發布建構變數,可直接跳到下一個步驟。

            buildTypes {
              release {
                signingConfig signingConfigs.debug
              }
            }
          
  2. 在 Android Studio 中,依序選取「Build」>「Select Build Variant...」,然後選擇發布變化版本。

將發布應用程式轉換為可分析的應用程式

  1. 開啟 AndroidManifest.xml 檔案並在 <application> 中新增下列指令,將上述的發布版應用程式轉換為可分析的應用程式。詳情請參閱「建構要發布的應用程式」。

    <profileable android:shell="true"/>

  2. 視 SDK 版本而定,您可能需要在應用程式的 build.gradle 檔案中新增下列幾行指令。

          aaptOptions {
            additionalParameters =["--warn-manifest-validation"]
          }
        

分析可分析的應用程式

如要分析一可分析應用程式,請按照下列步驟操作:

  1. 在開發模擬器或裝置啟動應用程式。

  2. 在 Android Studio 中依序選取「View」>「Tool Windows」>「Profiler」,即可啟動分析器。

  3. 應用程式啟動後,按一下分析器中的「分析器的加號按鈕」按鈕,查看下拉式選單。接著選取您的裝置,然後選取「Other profileable processes」中的應用程式進入點。

    可分析的選單
  4. 分析器應附加至應用程式。僅 CPU 和 記憶體分析器能使用,其中記憶體分析器可使用的空間有限。

    可分析的作業階段檢視畫面
    可分析的選單
    可分析的選單

工作階段

您可以將分析器資料儲存為作業階段,該作業階段可保留直到關閉 Android Studio 為止。系統會記錄多個工作階段的剖析資訊,並在各個工作階段之間切換,讓您比較不同情境下的資源用量。

  • 如要啟動新的工作階段,請按一下「Start a new profiling session」 按鈕,然後在隨即顯示的下拉式選單中選取應用程式程序。
  • 當您記錄追蹤記錄擷取記憶體快照資料時,Android Studio 會將資料 (加上您應用程式的網路活動) 新增為目前工作階段的獨立項目。
  • 如要停止將資料新增到目前的工作階段,請按一下「Stop the current profiling session」
  • 如要匯入從 Android Studio 先前執行結果匯出的追蹤記錄,請按一下「Start new profiler session」,然後選擇「Load from file」

為較舊的裝置 (API 級別 < 26) 啟用額外支援

如要在搭載 Android 7.1 以下版本的裝置執行時顯示額外的剖析資料,Android Studio 必須在編譯的應用程式中插入監控邏輯。這些額外的剖析資料包括:

  • 所有分析器視窗的事件時間軸
  • 記憶體分析器中分配的物件數量
  • 記憶體分析器中的垃圾收集事件
  • 網路分析器中所有已傳輸檔案的詳細資料

如要為舊裝置提供額外支援,請按照下列步驟操作:

  1. 依序選取「Run」>「Edit Configurations」
  2. 在左側窗格中選取您的應用程式模組。
  3. 按一下「Profiling」分頁標籤,然後勾選「Enable additional support for older devices (API level < 26)」
  4. 再次建構並執行應用程式。

為舊版裝置啟用額外的支援功能會使建構程序變慢,因此只有在您想開始剖析應用程式時,才需要啟用這項功能。

執行獨立分析器

獨立的 Android Studio 分析器可讓您在不執行完整 Android Studio IDE 的情況下剖析應用程式。

如要執行獨立分析器,請按照下列指示操作:

  1. 確認分析器目前並未在 Android Studio 中執行。
  2. 前往安裝目錄,然後前往 bin 目錄:

    Windows/Linuxstudio-installation-folder/bin

    macOS:macOS 不支援獨立分析器。

  3. 根據您的 OS 執行 profiler.exeprofiler.sh。Android Studio 啟動畫面會隨即顯示。啟動畫面消失後,分析器視窗便會開啟。