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 發布的變數建立 SoftwareComponents。 |
執行設定檔的新穩定版旗標
AGP 包含新的 android.settings.executionProfile
旗標。使用這個標記可從 SettingsExtension
覆寫預設執行設定檔。詳情請參閱設定外掛程式說明文件。
如要預覽實驗性標記,請參閱預覽版版本資訊。
不支援 Kotlin 延遲屬性指派
如果您使用 Gradle 的 Kotlin DSL 編寫建構指令碼,請注意,Android Studio 和 AGP 8.0 不支援使用 =
運算子指派實驗性屬性。如要進一步瞭解這項功能,請參閱版本資訊和說明文件。
版本分析器工作類別
自 Android Studio Flamingo 起,Build Analyzer 會提供新的預設檢視畫面,顯示影響建構時間的工作。如果專案使用 AGP 8.0 以上版本,版本分析器會依類別分組顯示工作,而非個別顯示。舉例來說,Android 資源、Kotlin 或 Dexing 專屬的工作會歸類在一起,然後依建構時間排序。這樣一來,您就能輕鬆瞭解哪個類別對建構時間的影響最大。展開每個類別後,會顯示對應的工作清單。如要個別顯示工作,不要分組,請使用「依分組」下拉式選單。
新的設定外掛程式
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
如要執行 AGP 8.0,須使用 JDK 17
現在如果要用 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.0 版
已修正問題 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Android Gradle 外掛程式 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint 整合 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
縮減器 (R8) |
|
Android Gradle 外掛程式 8.0.1
已修正問題 | ||||
---|---|---|---|---|
縮減器 (R8) |
|
Android Gradle 外掛程式 8.0.2 版
已修正問題 | |||||
---|---|---|---|---|---|
縮減器 (R8) |
|