Android Gradle 外掛程式 8.1.0 (2023 年 7 月)

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 和應用程式內語言選單

如要啟用自動支援個別應用程式語言功能,請指定預設語言代碼:

  1. 在應用程式模組的 res 資料夾中,建立名為 resources.properties 的新檔案。
  2. resources.properties 檔案中,使用 unqualifiedResLocale 標籤設定預設語言代碼。如要設定語言代碼名稱的格式,請將語言代碼與選用的指令碼和區碼結合,並以連字號分隔。

    舉例來說,假設預設語言代碼是美式英文:

        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 會將該值設為預設值。