Android Gradle 外掛程式 8.0.0 版 (2023 年 4 月)

Android Gradle 外掛程式 8.0.0 是主要版本,其中包含多項 新功能和改善項目

相容性

最低版本 預設版本 附註
Gradle 8.0 8.0 詳情請參閱「更新 Gradle」一節。
SDK 版本工具 30.0.3 30.0.3 安裝設定 SDK 版本工具。
NDK 25.1.8937393 安裝設定 NDK 其他版本。
JDK 17 17 詳情請參閱「設定 JDK 版本」相關說明。

修補程式版本

以下是 Android Gradle 外掛程式的修補程式版本清單 8.0.

Android Gradle 外掛程式 8.0.2 版 (2023 年 5 月)

如需 AGP 8.0.2 修正的錯誤清單,請參閱 Android Studio 2022.2.1 已關閉的問題

Android Gradle 外掛程式 8.0.1 版 (2023 年 5 月)

這項次要更新修正了下列錯誤:

已修正問題
從 AGP 7.2.2 升級到 7.4.0 後,出現「No VersionRequirement with the given id in the table」錯誤
markTypeAsLive AGP 7.4.1 發生 R8 NullPointerException
[R8 4.0.53] Android 11 發生類別驗證失敗的嚴重問題

破壞性變更:模組層級建構指令碼中需要命名空間

您必須在模組層級 build.gradle.kts 檔案中設定命名空間,而非 而非資訊清單檔案您可以開始使用 namespace DSL 屬性 從 AGP 7.3 開始詳情請參閱: 設定命名空間

遷移至命名空間 DSL 時,請注意下列問題:

  • 舊版 AGP 會從主要命名空間推斷測試命名空間,或 或應用程式 ID,在某些情況下則不正確。AGP 升級助理會封鎖 如果發現專案的主要命名空間和測試命名空間 而且都一樣。如果升級作業遭到封鎖,您就必須手動變更 testNamespace 並據此修改原始碼
  • 變更測試命名空間後,您的程式碼可能會編譯 但檢測設備測試在執行階段會失敗如果您的 檢測設備測試原始碼會參照您在 「androidTest」和應用程式來源。

若需更多資訊,請參閲 問題 #191813691 註解 #19

破壞性變更:建構選項預設值

從 AGP 8.0 開始,這些標記的預設值已變更為 以便改善建構效能取得調整程式碼的相關協助,以支援 這些變更請使用 AGP 升級助理 (「Tools」>「AGP Upgrade Assistant」)。升級助理會引導您完成 配合新行為或設定旗標 先前的行為

檢舉 新的預設值 先前的預設值 附註
android.defaults.buildfeatures.buildconfig false true 根據預設,AGP 8.0 不會產生 BuildConfig。您需要具備 ,在需要的專案中使用 DSL 指定此選項。
android.defaults.buildfeatures.aidl false true 根據預設,AGP 8.0 不會啟用 AIDL 支援。您必須指定 這個選項會在您需要的專案中使用 DSL。這個標記是 預計在 AGP 9.0 中移除。
android.defaults.buildfeatures.renderscript false true 根據預設,AGP 8.0 不會啟用 RenderScript 支援。您需要執行的操作 請在您需要的專案中使用 DSL 指定此選項。這個 預計將在 AGP 9.0 中移除。
android.nonFinalResIds true false AGP 8.0 會透過下列方式產生含有非最終欄位的 R 類別: 預設值。
android.nonTransitiveRClass true false AGP 8.0 會為在叢集中定義的資源產生 R 類別 目前的單元
android.enableR8.fullMode true false AGP 8.0 預設會啟用 R8 完整模式。詳情請參閱 R8 完整模式

破壞性變更:強制執行的建構選項值

從 AGP 8.0 開始,您無法再變更這些標記的值。如果 您在 gradle.properties 檔案中指定時,系統會忽略該值,AGP 列印警告。

檢舉 強制執行價值 附註
android.dependencyResolutionAtConfigurationTime.warn true 如果 AGP 8.0 在運作期間偵測到設定解析,就會發出警告 因為這會對 Gradle 設定造成負面影響 次。
android.r8.failOnMissingClasses true 如果缺少 提升 DEX 最佳化品質如要解決這個問題,請在 找不到程式庫或 -dontwarn 保留規則詳情 看 R8 縮減器缺少類別警告
android.testConfig.useRelativePath true 支援在 啟用單元測試後,AGP 8.0 會產生 test_config.properties 檔案僅包含相對 路徑。這可確保 Android 單元測試一律使用 Gradle 建構快取。
android.useNewJarCreator true AGP 建立 JAR 檔案時會使用 Zipflinger 程式庫來改善 建構效能
android.bundletool.includeRepositoriesInDependencyReport true 啟用在 AAB 和 APK 中新增 SDK 依附元件資訊時, AGP 8.0 也會在這項資訊中新增專案存放區清單。目的地: 瞭解詳情,請參閱 Play 管理中心的依附元件資訊
android.enableArtProfiles true 系統現在一律會產生基準設定檔。詳情請參閱「基準設定檔」一文。
android.enableNewResourceShrinker true 根據預設,使用新的資源縮減器實作方式。而 資源縮減器支援動態功能。
android.enableSourceSetPathsMap true 用於計算相對資源路徑對應,以便 Gradle 建構作業 且內容較常更新
android.cacheCompileLibResources true 根據預設,現在可以快取編譯的程式庫資源,因為 Gradle 會追蹤相對於專案位置的資源檔案必要條件 可啟用 android.enableSourceSetPathsMap
android.disableAutomaticComponentCreation true 根據預設,AGP 8.0 不會建立 SoftwareComponent。而是透過 AGP 建立 僅適用於設定要發布的變化版本的軟體元件 發布新版本

為執行設定檔新增穩定旗標

AGP 包含新標記 android.settings.executionProfile。這個標記可用來 請從指令列中覆寫預設的執行設定檔 SettingsExtension。 詳情請參閱設定外掛程式說明文件

如要預覽實驗旗標,請參閱 預先發布版版本資訊

不支援 Kotlin 延遲屬性指派

如果您在建構指令碼使用 Gradle 的 Kotlin DSL,請注意 Android Studio 和 AGP 8.0 不支援使用 = 運算子。如要進一步瞭解這項功能,請參閱 版本資訊說明文件

版本分析器工作類別

自 Android Studio Flamingo 起,版本分析器將提供新的預設檢視畫面: 影響建構時間長度的工作如果您的專案使用 AGP 8.0 以上版本, 版本分析器會將工作分組,而非個別顯示工作 類別例如 Android 資源、Kotlin 或 Dexing 專屬工作 然後按建構時間長度排序這樣一來, 瞭解哪個類別對建構時間的影響最大。展開每個類別 會顯示對應工作的清單如要個別顯示工作, 不使用分組,請使用「分組依據」下拉式選單。

版本分析器工作類別。

新版設定外掛程式

AGP 8.0.0-alpha09 推出了新的設定外掛程式。設定外掛程式可讓您 您可以在應用程式中集中處理全域設定 (適用於所有模組的設定), 因此您不必逐一複製及貼上設定 模組。此外,您可以使用設定外掛程式建立工具 執行設定檔,或工具執行方式的不同操作說明。 並在兩者間切換

如要使用設定外掛程式,請在 settings.gradle 檔案中套用外掛程式:

apply plugin 'com.android.settings'

集中管理全域設定

如要設定全域設定,請在android settings.gradle 檔案。範例如下:

android {
  compileSdk 31
  minSdk 28
  ...
}

工具執行設定檔

設定外掛程式還可讓您為部分工具建立執行設定檔。一個 執行設定檔會決定工具的運作方式您可以選取 視環境而定。在執行設定檔中 可以為工具設定 JVM 引數,並將其設為在獨立程序中執行。 目前, 支援 R8 工具

在以下位置建立執行設定檔,並設定預設的執行設定檔: settings.gradle 檔案,如以下範例所示:

android {
  execution {
    profiles {
      high {
        r8 {
          jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
          runInSeparateProcess true
        }
      }
      low {
        r8 {
          jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
          runInSeparateProcess true
        }
      }
      ci {
        r8.runInSeparateProcess false
      }
    }
    defaultProfile "low"
  }
}

如要覆寫預設設定檔,請使用 有 android.experimental.settings.executionProfile 資源位於 gradle.properties 檔案:

android.experimental.settings.executionProfile=high

您也可以使用指令列設定這個屬性 不同的工作流程舉例來說,如果有持續整合工作流程 您可以使用指令列變更執行設定檔,而不必 變更 settings.gradle 檔案:

./gradlew assembleRelease \
  -Pandroid.experimental.settings.executionProfile=ci

若要執行 AGP 8.0,須使用 JDK 17

如要使用 Android Gradle 外掛程式 8.0 建構應用程式,現在必須使用 JDK 17 執行 Gradle。Android Studio Flamingo 封裝 JDK 17,並將 Gradle 設為 因為大多數 Android Studio 使用者都不需要 任何專案設定變更

如需手動設定 JDK 版本 您需要使用 JDK 17 以上版本。

使用獨立於 Android Studio 之外的 AGP 時,請將 JDK 版本升級到 設定JAVA_HOME 環境變數-Dorg.gradle.java.home 指令列選項 加入 JDK 17 的安裝目錄