分析應用程式效能

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

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

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

  • CPU 分析器可協助追蹤執行階段的效能問題。
  • 記憶體分析器可協助追蹤記憶體的空間配置。
  • 網路分析儀會監控網路流量的使用狀況。
  • 電力分析儀會追蹤用電量,可能會造成一定程度的耗電。

想進一步瞭解這些工具,請參考 Android Studio Profilers 頁面。

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

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

想進一步瞭解這些程式庫,請參考應用程式基準化頁面。

可分析的應用程式

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

profileable 之前,大多數開發人員都只能分析 Android 系統中可進行偵錯的應用程式,因此造成大量的潛在效能耗損。這些效能折損可能會導致分析結果失效,尤其是與計算時間有關時。表 1 總結了可進行偵錯和可進行分析應用程式間的差異。

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

否:

CPU 分析器 已滿

否:

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

我們推出了 Profileable,讓開發人員能自行設定向分析工具公開應用程式的資訊,同時產生較低的效能損耗。可分析的 APK 本質上即為在發布 APK 的資訊清單檔中加入一行 <profileable android:shell="true"/>

為建構可進行分析的應用程式,您需要先建構發布應用程式,接著更新資訊清單檔,將發布應用程式轉換為可進行分析應用程式。

建構發布應用程式

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

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

            buildTypes {
              release {
                signingConfig signingConfigs.debug
              }
            }
          
  2. 在 Android Studio 中,選取「建構」>「Select Build Variant」(選擇建構變數)...,然後選擇變數。

從發布變更為可設定

  1. 開啟 AndroidManifest.xml 檔案並新增下列指令,將上述的發布應用程式轉換為可分析的應用程式。細節請參考建構發布應用程式

    <profileable android:shell="true"/>

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

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

分析一可分析應用程式

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

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

  2. 在 Android Studio 中,依序選取「檢視」>「Tool Windows」(工具視窗) >「分析器」,來啟動分析器。

  3. 應用程式啟動後,請按一下分析器中的 分析器與按鈕 按鈕,以查看下拉式選單。選擇您的裝置,然後選取「其他可分析程序」下方的應用程式登錄。

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

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

注意:分析應用程式時,建議停用即時執行。因為使用「即時執行」時,效能會受到些微影響,而更新方法時所受影響會再略大一些。這些效能負面影響可能會干擾效能分析工具產出的資訊。此外,使用這項功能時產生的虛設常式方法可能會使堆疊追蹤變得複雜。