Android Gradle 外掛程式 8.2.0 (2023 年 11 月)
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
Android Gradle 外掛程式 8.2.0 是主要版本,內含多種新功能及改善項目。
相容性
Android Gradle 外掛程式 8.2 支援的最高 API 級別為 API 級別 34。以下提供其他相容性資訊:
|
最低版本 |
預設版本 |
附註 |
Gradle |
8.2 |
8.2 |
詳情請參閱「更新 Gradle」一節。 |
SDK 版本工具 |
34.0.0 |
34.0.0 |
安裝或設定 SDK 版本工具。 |
NDK |
無 |
25.1.8937393 |
安裝或設定 NDK 其他版本。 |
JDK |
17 |
17 |
詳情請參閱「設定 JDK 版本」相關說明。 |
新增可指定 JDK 路徑的巨集
#GRADLE_LOCAL_JAVA_HOME
是新的巨集,可用於指定 JDK 路徑。如此一來,您就能更輕鬆安全地為專案指定 Java 主路徑,用於 Gradle Daemon (背景程序) 的執行作業。您選取的路徑會儲存在 .gradle/config.properties
檔案的 java.home
欄位中。在 Android Studio 中,您可以透過 Gradle JDK 設定來設定這個欄位:依序選取「File」 (或 macOS 上的「Android Studio」) >「Settings」>「Build, Execution, Deployment」>「Build Tools」>「Gradle」。
根據預設,新專案會使用 #GRADLE_LOCAL_JAVA_HOME
。除非您已使用 #JAVA_HOME
等巨集,否則成功同步處理後,現有專案會自動遷移至新的巨集。
這個新巨集的主要優點如下:
- 不必先開啟專案即可手動修改 JDK 路徑,觸發同步處理作業。
- 降低與不相容的 Gradle 和專案 JDK 版本相關的錯誤,因為您選取的 Gradle JDK 只有單一可靠資料來源。
已修正問題
Android Gradle 外掛程式 8.2.0 版
已修正問題 |
Android Gradle 外掛程式 |
自訂來源類型應建立多個 sourceSets 變種版本
|
SDK 版本檢查不會處理 SDK 擴充功能的使用者
|
DependenciesInfoBuilder 需要更新 API 和相關文件
|
由於缺少巢狀結構成員,指定 Java 11 的 DexingNoClasspathTransform (minSdk >= 24) 無法執行
|
DslExtension.Builder.extendProjectWith() 無法以 Groovy 中所述方式運作
|
新增不使用 kotlin.Pair 的 VariantSelector.withFlavor API
|
由於「proguard.txt」已變更,AndroidLintAnalysisTask ( :lintAnalyzeExternalRelease) 會發生快取失敗的情況
|
應用程式合併的資訊清單包含來自依附元件的 extractNativeLibs 和 useEmbeddedDex 屬性
|
AIDL 無法搭配建構工具 33.0.0 運作
|
AGP:公開 AIDL 工具的路徑和架構 AIDL 檔案做為公用 API
|
要求:讓 IDE 提供「PermittedSubclasses requires ASM9」的修正項目
|
編譯 AGP 時指定位元碼 17
|
移除 VariantManager.getModifiedName
|
AndroidTest.packaging.jniLibs.keepDebugSymbols 不會影響 androidTest 封裝作業
|
GMD 檢測設備測試工作會停止運作,且在重試時失敗
|
agp 8.1.0 中的 generateLocaleConfig 採用非確定性排序,會造成可重現的建構作業中斷
|
ProcessApplicationManifest.navigationJsons 的檔案中有絕對路徑
|
建立 AnalyticsService 後,無法透過 AnalyticsConfiguratorService 存取 GradleBuildProject.Builder
|
AndroidTest.packaging.jniLibs.keepDebugSymbols 不會影響 androidTest 封裝作業
|
允許對無效色彩值進行編譯
|
VariantBuilder 的「ReplaceWith」有誤
|
Gradle 8.1 因 .gradle/.android/analytics.settings 造成設定快取中斷
|
淘汰訊息並未使用「ReplaceWith」
|
公開一個能取得預設 NDK 版本的方法
|
Android Gradle 外掛程式需要 Java 17 才能執行
|
ASM 轉換和 toAttach() 不相容
|
修正在 KMP 專案中透過 Gradle 與 K2 UAST 執行 Lint 時的 LintErrors
|
支援變化版本層級的 missingDimensionStrategy,以及可能的建構類型/變種版本 matchingFallback
|
「android.injected.studio.version」已從 Android Studio Giraffe 中移除
|
新增停用 AndroidXDependencyCheck 的功能
|
agp 8.1.0 中的 generateLocaleConfig 採用非確定性排序,會造成可重現的建構作業中斷
|
透過 AAR 中繼資料宣傳 R8/D8 版本要求 (例如針對 coreLibraryDesugaring 和新的 API 外聯)
|
同步處理警告:「GradleBuildProject.Builder should not be accessed through AnalyticsConfiguratorService after AnalyticsService is created」
|
更新至 Gradle 8.2 milestone 或 RC
|
無法存取「java.lang.Comparable」
|
Android 程式庫模組不提供 androidResources
|
AGP 從 8.0.2 更新至 8.1.0 之後,':app:mergeReleaseClasses' 工作執行失敗
|
Gradle 8.1 因 .gradle/.android/analytics.settings 造成設定快取中斷
|
[AGP 8.1.0] 如果 splits.abi.isEnable 和 testOptions.unitTests.isIncludeAndroidResources 皆為 true,./gradlew 測試會失敗,並顯示「Unable to find manifest output」
|
Android Studio Giraffe 搭配 AGP 8.1 時不會遵循 versionCodeOverride 的運作方式
|
執行檢測設備測試後,AGP 8.1.0 會解除安裝應用程式 - 7.4.2 不會
|
轉換 APK 會導致 ListingFileRedirectTask 發生錯誤
|
HEDGEHOG REGRESSION:執行按鈕會延遲幾秒鐘 (建立規格)
|
|
Dexer (D8) |
對最低 API 級別 34 以上版本進行 DEX 處理時,啟用原生記錄和密封類別
|
|
Lint |
例項化的 Lint 檢查功能無法妥善處理 AppComponentFactory
|
Lint 8.2.0 Alpha 版仍不支援在 Kotlin 中匯入頂層函式
|
新增不要在 Lint 基準中加入行數和欄數的選項
|
新增不要在 Lint 基準中加入行數和欄數的選項
|
Lint 測試不支援 Java 17 語言功能
|
Bumblebee 2021.1.1 修補程式 1 指出,commons-io 的較舊版本 (20030203.000550) 比 2.11.0 版新。
|
Lint 8.2.0 Alpha 版仍不支援在 Kotlin 中匯入頂層函式
|
Bumblebee 2021.1.1 修補程式 1 指出,commons-io 的較舊版本 (20030203.000550) 比 2.11.0 版新。
|
Android Studio 會誤將指定版本標示為過時。
|
使用 K2 UAST 時,Lint 會忽略 UseValueOf 問題
|
其他由 Android Lint 標記的專案發生非預期的問題
|
Android Lint 在 KMP 程式庫中執行失敗,並顯示「property 'variantInputs.name' doesn't have a configured value.」。
|
|
Lint 整合 |
testImplementation 依附元件中的 DuplicatePlatformClasses lint 錯誤
|
|
縮減器 (R8) |
java.lang.VerifyError:類別遭驗證器拒絕
|
使用 Apache POI 程式庫時,建構作業會在執行 :minifyReleaseWithR8 時卡住
|
如果移除空值檢查,Kotlin 1.9 會導致 Kotlin lambda 遭到 R8 刪除
|
|
Android Gradle 外掛程式 8.2.1 版
已修正問題 |
Android Gradle 外掛程式 |
如果子專案類別已透過構件轉換作業完成 dex 處理,請不要在子專案類別上執行 dex 工作
|
Android Gradle 外掛程式無法搭配使用 JavaVersion.VERSION_11 和 OpenJDK 21 ea
|
|
Dexer (D8) |
|
縮減器 (R8) |
R8 會產生毀損的 dex,在執行階段導致類別層級轉換例外狀況
|
R8 導致介面變更為無法存取的介面
|
R8 Flurry SDK 在使用 AGP 8.2.0 時當機
|
Android - R8 導致 LinearLayoutManager 的子類別當機
|
重新封裝時,R8 中的 ClassCastException 會關閉,縮減、模糊化和最佳化功能則會關閉
|
R8 在 BridgeAnalyzer.analyzeMethod 中停滯
|
R8 第 8.2.33 版,升級後發生「java.lang.VerifyError: Bad type on operand stack」執行階段當機問題
|
|
Android Gradle 外掛程式 8.2.2 版
已修正問題 |
Android Gradle 外掛程式 |
無法在 AGP 8.2.0 中設定 JaCoCo 版本
|
|
Dexer (D8) |
[脫糖程式庫] 脫糖程式庫 2.1 版本與舊版 R8 不相容
|
是否只在 D8 中執行最佳化?
|
|
縮減器 (R8) |
[R8 8.3.21] R8 8.3.21 比 R8 8.1.56 大 1.57MB
|
class.getInterfaces() 傳回空白
|
|
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2025-01-22 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-01-22 (世界標準時間)。"],[],[]]