Android Gradle 外掛程式 8.1.0 是主要版本,內含多種新功能及改善項目。
相容性
最低版本 | 預設版本 | 附註 | |
---|---|---|---|
Gradle | 8.0 | 8.0 | 詳情請參閱「更新 Gradle」一節。 |
SDK 版本工具 | 33.0.1 | 33.0.1 | 安裝或設定 SDK 版本工具。 |
NDK | 無 | 25.1.8937393 | 安裝或設定 NDK 其他版本。 |
JDK | 17 | 17 | 詳情請參閱「設定 JDK 版本」相關說明。 |
Kotlin DSL 是建構設定的預設項目
新專案現在預設會使用 Kotlin DSL (build.gradle.kts
) 進行建構設定。這可提供比 Groovy DSL (build.gradle
) 更佳的編輯體驗,具有語法醒目顯示、程式碼完成和宣告導覽功能。請注意,如果您使用的是 AGP 8.1 和 Kotlin DSL 進行建構設定,建議使用 Gradle 8.1 以獲得最佳體驗。詳情請參閱 Kotlin DSL 遷移指南。
自動支援個別應用程式語言
從 Android Studio Giraffe Canary 7 和 AGP 8.1.0-alpha07 開始,您可以將應用程式設為自動支援個別應用程式語言偏好。Android Gradle 外掛程式會根據您的專案資源產生 LocaleConfig
檔案,並在最終資訊清單檔案中加入該檔案的參照,為您省去手動操作的麻煩。AGP 會使用應用程式模組 res
資料夾中的資源和任何程式庫模組依附元件,決定要納入 LocaleConfig
檔案的語言代碼。
請注意,自動個別應用程式語言功能支援在 Android 13 (API 級別 33) 以上版本中執行的應用程式。如要使用這項功能,必須將 compileSdkVersion
設為 33 以上。如要為先前的 Android 版本設定個別應用程式語言偏好,還是需要使用 API 和應用程式內語言選單。
如要啟用自動支援個別應用程式語言功能,請指定預設語言代碼:
- 在應用程式模組的
res
資料夾中,建立名為resources.properties
的新檔案。 在
resources.properties
檔案中,使用unqualifiedResLocale
標籤設定預設語言代碼。如要設定語言代碼名稱的格式,請將語言代碼與選用的指令碼和區碼結合,並以連字號分隔。- 語言:使用二或三個字母的 ISO 639-1 代碼。
- 指令碼 (選用):使用 ISO 15924 代碼。
- 地區 (選用):使用兩個字母的 ISO 3166-1-alpha-2 代碼或三位數的 UN_M.49 代碼。
舉例來說,假設預設語言代碼是美式英文:
unqualifiedResLocale=en-US
AGP 會使用 res
資料夾中的 values-*
目錄,將這個預設語言代碼和所有指定替代語言代碼加進自動產生的 LocaleConfig
檔案。
根據預設,系統會關閉自動支援個別應用程式語言功能。如要開啟這項功能,請在模組層級 build.gradle.kts
檔案 (若使用 Groovy 則為 build.gradle
檔案) 的 androidResources {}
區塊中使用 generateLocaleConfig
設定:
Kotlin
android { androidResources { generateLocaleConfig = true } }
Groovy
android { androidResources { generateLocaleConfig true } }
Android Lint 包含指定 JVM 17 的位元碼
從 AGP 8.1.0-alpha04 開始,Android Lint 會包含指定 JVM 17 的位元碼。如要編寫自訂 Lint 檢查,則必須使用 JDK 17 以上版本進行編譯,並在 Kotlin 編譯器選項中指定 jvmTarget = '17'
。
如要進一步瞭解 Lint 工具,請參閱「使用 lint 檢查項目改善程式碼」。
原生資料庫壓縮設定已移至 DSL
從 AGP 8.1.0-alpha10 開始,如果您未使用 DSL (而非資訊清單) 設定原生資料庫壓縮,就會收到警告。以下指南說明如何將設定更新為使用 DSL。如需進行這些更新的相關說明,請使用 AGP 升級小幫手 (依序點選「Tools」>「AGP Upgrade Assistant」)。
如要使用未壓縮的原生程式庫,請從資訊清單移除 android::extractNativeLibs
屬性,並將下列程式碼新增至模組層級 build.gradle.kts
檔案 (若使用 Groovy,則為 build.gradle
檔案):
Kotlin
android { packagingOptions { jniLibs { useLegacyPackaging = false } } }
Groovy
android { packagingOptions { jniLibs { useLegacyPackaging false } } }
實驗功能版本旗標
這些是實驗性標記,可用於設定 AGP 8.1 中的建構作業。
檢舉 | 已新增 | 預設值 | 附註 |
---|---|---|---|
android.experimental.useDefaultDebugSigningConfigForProfileableBuildtypes |
AGP 8.0 | false |
在未指定簽署設定的情況下啟用這項功能,會導致 AGP 在執行可分析或可進行偵錯的建構作業時,使用預設的偵錯簽署設定。系統會預設停用這個標記,以鼓勵建構作者宣告特定剖析簽署設定。 |
android.experimental.library.desugarAndroidTest |
AGP 8.0 | false |
這個標記可讓程式庫建構工具為測試 APK 啟用核心程式庫脫糖程序,而不會影響產生的 AAR (例如透過程式碼檢查)。我們計劃最終在 Variant API 中支援這項行為。 |
android.experimental.testOptions.managedDevices.customDevice |
AGP 8.0 | false |
啟用後,Gradle 管理的裝置會允許外掛程式提供使用者定義的自訂裝置類型。如要使用 Firebase Test Lab 外掛程式,您必須啟用這個旗標。 |
android.lint.printStackTrace |
AGP 8.0 | false |
啟用後,Android Lint 會在當機時列印堆疊追蹤。這個標記的功能與 LINT_PRINT_STACKTRACE 環境變數相同。 |
android.experimental.testOptions.managedDevices.maxConcurrentDevices |
AGP 8.0 | 無 | 指定在任何時間點的並行 Gradle 管理裝置 (AVD) 數量上限。如果值為 0 或負數,表示沒有裝置數量上限。 |
android.experimental.testOptions.installApkTimeout |
AGP 8.0 | 無 | 安裝 APK 的逾時時間長度 (以秒為單位)。如果值為 0 或負數,則 UTP 會將該值設為預設值。 |