藉助版本分析器排解版本效能的問題

使用版本分析器檢查專案的版本效能。針對您執行的每項版本,版本分析器會嘗試呈現最重要的資訊,方便您快速找出並解決建構效能中的迴歸問題。

如要瞭解其他改善建構效能的策略,請參閱「最佳化建構速度」。

開始使用

每次建構應用程式時,版本分析器都會建立一份報表,並在「Build」視窗中顯示最新的報吿資料。

如要開始使用,請按照下列指示操作:

  1. 如果尚未建立應用程式,請透過下列其中一種方式建構應用程式:
    • 在選單列中,依序按一下「Build」>「Make Project」
    • 如要建立 Android App Bundle 或 APK,請按一下「Build」>「Build Bundle(s)/APK」>「Build Bundle」或是從選單上選「Build」>「Build Bundle(s)/APK」>「Build APK(s)」
  2. 如要開啟「Build」視窗,請從選單列中依序選取「View」>「Tool Windows」>「Build」
  3. 如要在「Build Analyzer」中查看建構報告,請按一下「Build」視窗中的「Build Analyzer」分頁標籤。

版本分析器顯示的資料可能會因版本而異,因此建議您多次建構專案,並比較資料來判斷模式。

檢視具有會影響版本時間長度的工作的外掛程式

完成建構後初次開啟版本分析器時,該視窗會顯示建構分析的總覽,如圖 1 所示。

圖 1. 版本分析器總覽頁面會顯示發現內容的摘要。

如要查看外掛程式的細目,以及會影響建構時間長度的工作,請按一下總覽頁面上的「Plugins with tasks impacting build duration」。您也可以從下拉式選單中選取「Tasks」,並確認資料是依照外掛程式分組。圖表會依完成外掛程式所需的總時間排序外掛程式和相關工作。

圖 2. 版本分析器會詳細列出會影響版本時間長度的外掛程式。

查看決定版本時間長度的工作

如要查看影響版本時間長度的工作細目,請按一下總覽頁面上的「Tasks impacting build duration」,或在下拉式選單中選取「Tasks」。如果專案使用 AGP 8.0 以上版本,系統預設會依類別分組工作,方便您找出影響建構時間長度的區域。點選每個子工作即可進一步瞭解其執行作業。

圖 3. 版本分析器會詳細列出對版本作業時間長度影響程度最大的外掛程式。

檢查警告

如果版本分析器偵測到某些工作可以設定為更有效率地執行,則會發出警告。如要查看版本分析器針對該版本發現的所有警告,請按一下總覽頁面上的「All warnings」,或在下拉式選單中選取「Warnings」

有些警告會有「產生報表」連結,如圖 4 所示。按一下「Generate report」連結後,系統會顯示對話方塊,其中含有其他資訊,可協助外掛程式開發人員在新版外掛程式中解決問題。按一下「Copy」將文字儲存至剪貼簿,方便您將資訊貼到提供給外掛程式開發人員的錯誤報告中。

圖 4. 版本分析器警示的詳細資訊。

警示類型

版本分析器會回報下列警告類型:

  • 一律執行工作:一律執行的工作會讓其他工作在每個版本中執行,這是不必要的。收到這種警示的主要原因有二:

    • (較常見) 您未正確宣告工作的輸入/輸出。如果是這種情形,請正確宣告工作的輸入和輸出。這表示,您可以自行在此宣告輸入及輸出,或者如果警示是因為第三方外掛程式的工作所引起,則請變更外掛程式版本。

    • (較不常見) 工作會將 upToDateWhen 設為否,這點應予以避免。可能是因為某些邏輯判定為否,或 upToDateWhen 經過硬式編碼將其指定為否。如果有邏輯判定為否,則這個結果可能是刻意的設定,您可以選擇忽略此警示。如果 upToDateWhen 的硬式編碼強制指定為否,建議您從程式碼中移除該硬式編碼。

  • 工作設定問題:宣告成與輸出相同的目錄的工作會產生此警示。這表示這些工作的輸出內容很可能不會保存在版本中,而且即使沒有改變,這些工作仍會一直執行。如要解決這則警示問題,您必須為工作宣告不同的輸出目錄。亦即在可以的地方自行宣告不同的輸出目錄,或者如果觸發警示的工作來自第三方外掛程式,則變更外掛程式版本。

  • 非累加性的註解處理工具:這個警示會在註解處理工具屬於非累加、且會導致 JavaCompile 工作一律以非累加的方式執行時產生。如要解決這項警示,請切換至累加式註解處理工具

  • 設定快取:如果專案未啟用設定快取,系統就會顯示這項警示。版本分析器會逐步檢查一系列的版本,確認您的專案是否與設定快取相容。如果相容性檢查成功,您可以從版本分析器中開啟設定快取。

  • 檢查 Jetifier:如果專案中有 enableJetifier 旗標且已啟用,系統就會顯示此警示;意即如果 gradle.properties 檔案中有 android.enableJetifier=true,就會顯示此警示。版本分析器可以執行檢查,確認是否可安全移除該旗標,確保能提升您的專案建構效能,並停止使用未經維護的 Android 支援資料庫。

檢查下載作業的影響

版本分析器會提供下載依附元件的耗費時間摘要,以及每個存放區的下載作業詳細檢視畫面。如要查看下載作業的影響,請從下拉式選單中選取「Downloads」。這項資訊也會顯示在「Sync視窗中。

您可以根據這項資訊,判斷非預期的依附元件下載作業是否會對建構效能造成負面影響。在漸進式建構作業中,這項資訊特別重要,因為不應一致性地下載所有構件。

具體來說,您可以利用這項資訊找出設定問題,例如使用會造成非預期下載作業的依附元件動態版本。此外,如果您發現特定存放區有大量失敗的要求,可能表示應該把該存放區從存放區設定中移除,或移到較低位置。

圖 5. 版本分析器會顯示下載作業對建構時間長度的影響。

[僅限 Windows] 檢查防毒軟體的影響

如果防毒軟體可能會影響建構效能,版本分析器會通知您。如果防毒軟體 (例如 Windows Defender) 對 Gradle 使用的目錄進行即時掃描,就可能發生這種情況。版本分析器會建議要從主動掃描中排除的目錄清單,如果可以,也會提供將目錄新增至 Windows Defender 資料夾排除清單的連結。