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 |
如果缺少可確保更佳 DEX 最佳化的類別,AGP 8.0 就會導致使用 R8 的建構作業失敗。如要解決這個問題,您需要新增缺少的程式庫或 -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 |
根據預設,使用新的資源 shinker 實作項目。新的資源縮減器支援動態功能。 |
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 起,Build Analyzer 針對影響建構時間的任務提供新的預設檢視畫面。如果專案使用 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
若要執行 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) |
|