Android Gradle 外掛程式 8.4.0 版 (2024 年 4 月)

Android Gradle 外掛程式 8.4.0 是主要版本,內含多種新功能及改善項目。

相容性

Android Gradle 外掛程式 8.4 支援的最高 API 級別為 API 級別 34。以下提供其他相容性資訊:

最低版本 預設版本 附註
Gradle 8.6 8.6 詳情請參閱「更新 Gradle」一節。
SDK 版本工具 34.0.0 34.0.0 安裝設定 SDK 版本工具。
NDK 26.1.10909125 安裝設定 NDK 其他版本。
JDK 17 17 詳情請參閱「設定 JDK 版本」相關說明。

以下是 Android Gradle 外掛程式 8.4 的新功能。

修補程式版本

以下是 Android Studio Jellyfish 和 Android Gradle 外掛程式 8.4 的修補程式版本清單。

Android Studio Jellyfish | 2023.3.1 修補程式 2 和 AGP 8.4.2 (2024 年 6 月)

重要安全性更新:Android Studio Iguana | 2023.2.1 以上版本的 GitHub 外掛程式中存在安全性漏洞,可能會將存取權存取權杖洩漏給未經授權的對象。

修正方式:Jetbrains 已解決 IntelliJ 平台產品中的這個問題,修正內容現已納入 Android Studio Jellyfish | 2023.3.1 Patch 2 (2023.3.1.20)

如果您已在穩定版管道中安裝 Android Studio 版本,請依序點選「Help」>「Check for Updates」 (或在 macOS 中依序點選「Android Studio」>「Check for Updates」),即可取得更新。否則,請下載最新的穩定版

此外,如果您在 IDE 中積極使用 GitHub 提取要求功能,強烈建議您撤銷外掛程式使用的任何 GitHub 權杖。由於外掛程式可使用 OAuth 整合或個人存取權杖 (PAT),請檢查這兩項,並視需要撤銷:

  • 如要撤銷 OAuth 整合的存取權,請依序前往「應用程式」>「已授權的 OAuth 應用程式」,然後撤銷 JetBrains IDE 整合權杖的存取權。
  • 如要撤銷 PAT 的存取權,請前往「Personal access tokens」,然後刪除為 GitHub 外掛程式核發的權杖。預設的符記名稱為 IntelliJ IDEA GitHub 整合外掛程式,但您可能會使用自訂名稱。

撤銷權杖存取權後,您必須重新設定外掛程式,才能再次使用所有外掛程式功能(包括 Git 作業)。

造成不便,我們深感抱歉。我們強烈建議所有使用者立即更新,以保護自己的程式碼和資料。

這項次要更新也修正了這些錯誤

Android Studio Jellyfish | 2023.3.1 修補程式 1 和 AGP 8.4.1 (2024 年 5 月)

這項次要更新修正了這些錯誤

縮減程式庫類別

自 Android Gradle 外掛程式 8.4 版起,如果 Android 程式庫專案經過縮減,則會發布經過縮減的程式類別,以便進行跨專案發布作業。也就是說,如果應用程式依附 Android 程式庫子專案的縮減版本,則 APK 會包含縮減的 Android 程式庫類別。如果 APK 中缺少類別,您可能需要調整程式庫保留規則

如果您正在建構及發布 AAR,程式庫所依賴的本機 JAR 會未經縮減的形式納入 AAR,也就是說 程式碼縮減器不會在這些 JAR 上執行。

如要還原為先前的行為,請在 gradle.properties 檔案中設定 android.disableMinifyLocalDependenciesForLibraries,並回報錯誤。日後的 AGP 版本將移除這個標記。

已修正問題

Android Gradle 外掛程式 8.4.0 版

已修正問題
Android Gradle 外掛程式
改善錯誤訊息,說明為何「--release」選項無法用於 JavaCompile
使用 @DoNotCacheByDefault 停用 MergeSourceSetFolders 快取
無法在 AGP 8.2.0 中設定 JaCoCo 版本
DynamicFeatureBuildType 缺少 isDebuggable
經過精簡的程式庫類別無法正確發布,無法供跨專案使用
提供排除產生檔案的 Variant#sources API
AGP 模型不包含 Java 平台專案依附元件
ExtractAarTransform 會為沒有 classes.jar 的 AAR 建立無法重現的 classes.jar
允許從 ComposeOptions 設定來源資訊
無法在訊息 android.bundle.DeviceSpec 中找到欄位 sdk_runtime
支援 compileOnlyApi
停用資源處理功能時,R8 在程式庫模組上失敗
新增在轉換期間變更構件名稱的功能
將工作輸出內容新增為 sourceSets.androidMain.resources 的 srcDir,不會建立工作依附元件
AndroidPluginVersion.toString() 缺少開頭的 0
Artifacts.add(FileSystemLocation) 應更嚴格。
AGP 8.3.0-alpha11 產生的發布 APK 在啟動時當機,並顯示 android.content.res.Resources$NotFoundException
在使用動態功能的專案中,Android Gradle 外掛程式 8.2.0 安裝工作會失敗
AIDL 編譯失敗,並顯示 IndexOutOfBoundsException:索引 0 超出長度 0 的範圍
MergeJavaResourcesTask 增量輸入處理問題
AGP 8.3.0-alpha02 依附於有已知安全漏洞的程式庫
所選活動範本需要含有 androidx.* 依附元件的專案
AGP 升級助理誤將 consumerProguardFiles 從模組中移除
AGP 升級工具載入無限次
SourceDirectories#static 不應依附 GenerateBuildConfig 工作
Compose 預覽無法解析遞移依附元件的類別
AGP 8.3 會破壞 zipApksFor 工作
封裝在 Android APK 中的 AndroidX 電腦構件
Lint
Lint 測試架構的 GradleModelMocker 不允許設定程式庫版本
Lint K2 UAST:UCallableReferenceExpression 回報錯誤的 qualifierType
使用重載函式時,useK2Uast=true 導致 Lint 出現偽陽性
[BuildTool/Lint] ChecksSdkIntAtLeast 建構函式屬性
Lint 整合
Lint 無法解析 KMP 依附元件

Android Gradle 外掛程式 8.4.1 版

已修正問題
Android Gradle 外掛程式
允許隱藏關於 JDK 21 淘汰指定 Java 8 支援的警告
Dexer (D8)
java.lang.VerifyError:類別遭驗證器拒絕
模糊處理後,新版 R8 格式轉換錯誤
中繼版本可能沒有用於存根資料的完整全域合成內容

Android Gradle 外掛程式 8.4.2 版

已修正問題
Android Gradle 外掛程式
AGP 8.4 似乎會中斷 CI 上的 GMD 下載作業