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 最佳化品質如要解決這個問題,請在
找不到程式庫或 -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 |
根據預設,使用新的資源 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 起,版本分析器將提供新的預設檢視畫面: 影響建構時間長度的工作如果專案使用 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 使用者都不必變更專案設定。
如需手動設定 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) |
|