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

Android Gradle 外掛程式 8.4.0 是主要版本,其中包含多項新功能和改善項目。

相容性

Android Gradle 外掛程式 8.4 支援的最高 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 Integration」權杖的存取權。
  • 如要撤銷 PAT 的存取權,請前往「Personal access tokens」,然後刪除為 GitHub 外掛程式核發的權杖。預設權杖名稱為「IntelliJ IDEA GitHub integration plugin」,但您可能使用自訂名稱。

撤銷權杖存取權後,您需要重新設定外掛程式,才能再次使用所有外掛程式功能,包括 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,然後回報錯誤。Android Gradle 外掛程式後續版本將移除這個標記。

已修正問題

Android Gradle 外掛程式 8.4.0 版

已修正問題
Android Gradle 外掛程式
改善錯誤訊息,說明為何「--release」選項無法用於 JavaCompile
使用 @DoNotCacheByDefault 停用 MergeSourceSetFolders 快取
無法在 AGP 8.2.0 中設定 JaCoCo 版本
DynamicFeatureBuildType 缺少 isDebuggable
無法正確發布縮減的程式庫類別,供專案間使用
提供排除所產生檔案的 Variant#sources API
AGP 模型不包含 java-platform 專案依附元件
ExtractAarTransform 會為沒有 classes.jar 的 AAR 建立無法重現的 classes.jar
允許從 ComposeOptions 設定 sourceInformation
Cannot find field: sdk_runtime in message android.bundle.DeviceSpec
支援 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:Index 0 out of bounds for length 0
MergeJavaResourcesTask 增量輸入處理問題
AGP 8.3.0-alpha02 依附於有已知安全漏洞的程式庫
所選活動範本需要具有 androidx.* 依附元件的專案
AGP 升級助理錯誤地從模組中移除 consumerProguardFiles
AGP 升級小幫手無限載入
SourceDirectories#static 不應依附 GenerateBuildConfig 工作
Compose 預覽無法解析遞移依附元件中的類別
AGP 8.3 會中斷 zipApksFor 工作
封裝在 Android APK 中的 AndroidX Desktop 構件
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 下載作業