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 檔案中設定命名空間,而非資訊清單檔案。自 AGP 7.3 起,您可以開始使用 namespace DSL 屬性。詳情請參閱「設定命名空間」一文。
遷移至命名空間 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 |
如果缺少類別,AGP 8.0 會導致使用 R8 的建構作業失敗,以確保更完善的 DEX 最佳化。如要解決這個問題,您必須新增缺少的程式庫或 -dontwarn 保留規則。詳情請參閱「R8 縮減器缺少類別警告」。 |
android.testConfig.useRelativePath |
true |
啟用在單元測試中使用 Android 資源、資產和資訊清單的支援功能後,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 只會為使用發布 DSL 設定發布的變體建立 SoftwareComponent。 |
執行設定檔的新穩定旗標
AGP 包含新旗標 android.settings.executionProfile。使用這個旗標,即可覆寫 SettingsExtension 的預設執行設定檔。詳情請參閱設定外掛程式說明文件。
如要預覽實驗性旗標,請參閱預先發布版資訊。
不支援 Kotlin 延遲屬性指派
如果您使用 Gradle 的 Kotlin DSL 建立建構指令碼,請注意,Android Studio 和 AGP 8.0 不支援使用 = 運算子指派實驗性屬性。如要進一步瞭解這項功能,請參閱版本資訊和說明文件。
版本分析器工作類別
自 Android Studio Flamingo 起,版本分析器會針對影響建構時間長度的工作,提供新的預設檢視畫面。如果專案使用 AGP 8.0 以上版本,版本分析器會依類別將工作分組,而不是個別顯示。舉例來說,Android 資源、Kotlin 或 Dexing 專屬的工作會分組在一起,然後依建構時間長度排序。這有助於您找出對建構時間影響最大的類別。展開各個類別,即可查看對應的工作清單。如要個別顯示工作,不進行分組,請使用「Group by」(分組依據) 下拉式選單。

新設定外掛程式
AGP 8.0.0-alpha09 推出新的設定外掛程式。設定外掛程式可讓您集中管理全域設定 (適用於所有模組的設定),因此您不必在多個模組中複製及貼上設定。此外,您可以使用設定外掛程式建立工具執行設定檔,或建立不同的工具執行指令,並在這些指令之間切換。
如要使用設定外掛程式,請在 settings.gradle 檔案中套用外掛程式:
apply plugin 'com.android.settings'
集中管理全域設定
如要設定全域設定,請使用 settings.gradle 檔案中的新 android 區塊。範例如下:
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"
}
}
如要覆寫預設設定檔,請在 gradle.properties 檔案中使用 android.experimental.settings.executionProfile 屬性選取其他設定檔:
android.experimental.settings.executionProfile=high
您也可以使用指令列設定這項屬性,以便設定不同的工作流程。舉例來說,如果您有持續整合工作流程,可以使用指令列變更執行設定檔,而不必變更 settings.gradle 檔案:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
必須使用 JDK 17 才能執行 AGP 8.0
現在如果要用 Android Gradle 外掛程式 8.0 建構應用程式,則必須使用 JDK 17 才能執行 Gradle。Android Studio Flamingo 隨附 JDK 17,並設定讓 Gradle 預設使用,因此大部分的 Android Studio 使用者都不必變更專案設定。
如需手動設定 AGP 在 Android Studio 使用的 JDK 版本,請使用 JDK 17 以上版本。
使用獨立於 Android Studio 之外的 AGP 時,請將 JAVA_HOME 環境變數或 -Dorg.gradle.java.home 指令列選項設為 JDK 17 安裝目錄,藉此升級 JDK 版本。
已修正問題
Android Gradle 外掛程式 8.0.2
| 已修正問題 | |||||
|---|---|---|---|---|---|
| 縮減器 (R8) |
|
||||
Android Gradle 外掛程式 8.0.1
| 已修正問題 | ||||
|---|---|---|---|---|
| 縮減器 (R8) |
|
|||
Android Gradle 外掛程式 8.0.0
| 已修正問題 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Android Gradle 外掛程式 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Lint 整合 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 縮減器 (R8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||