Android Java Gradle 遷移指南
摘要
#如果您最近將 Android Studio 更新到 Flamingo 版本,並且執行或建置了現有的 Android 應用程式,您可能會遇到類似以下的錯誤
此錯誤的終端機輸出類似於以下內容
sh
FAILURE: Build failed with an exception.
* Where:
Build file '…/example/android/build.gradle'
* What went wrong:
Could not compile build file '…/example/android/build.gradle'.
> startup failed:
General error during conversion: Unsupported class file major version 61
java.lang.IllegalArgumentException: Unsupported class file major version 61
at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:189)
at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:170)
[…
…
… 209 more lines of Groovy and Gradle stack trace …
…
…]
at java.base/java.lang.Thread.run(Thread.java:833)
此錯誤發生是因為 Android Studio Flamingo 將其捆綁的 Java SDK 從 11 更新到 17。Flutter 使用 Android Studio 捆綁的 Java 版本來建置 Android 應用程式。 Gradle 版本 早於 7.3 在使用 Java 17 時無法執行。
您可以使用以下其中一種方法,將您的 Gradle 專案升級到相容版本(7.3 到 7.6.1,包含兩者)來修正此錯誤。
解決方案 #1:使用 Android Studio 引導式修正
#在 Android Studio Flamingo 中升級 Gradle 版本,如下所示
在 Android Studio 中,開啟
android
資料夾。這應該會顯示以下對話方塊更新到 7.3 到 7.6.1 之間的 Gradle 版本,包含兩者。
依照引導式工作流程更新 Gradle。
解決方案 #2:在命令列上手動修正
#從您的 Flutter 專案頂層執行以下操作。
前往您專案的 Android 目錄。
cd android
將 Gradle 更新到首選版本。在 7.3 到 7.6.1 之間選擇,包含兩者。
./gradlew wrapper --gradle-version=7.6.1
注意事項
#一些需要注意的事項
- 對每個受影響的 Android 應用程式重複此步驟。
- 那些不透過 Android Studio 下載 Java 和 Android SDK 的使用者也可能遇到此問題。如果您已手動將 Java SDK 升級到 17 版,但尚未升級 Gradle,您也可能會遇到此問題。修正方法相同:將 Gradle 升級到 7.3 到 7.6.1 之間的版本。
- 您的開發機器可能包含多個 Java SDK 的副本
- Android Studio 應用程式包含一個 Java 版本,Flutter 預設使用該版本。
- 如果您沒有安裝 Android Studio,Flutter 會依賴您的 Shell 指令碼的
JAVA_HOME
環境變數定義的版本。 - 如果未定義
JAVA_HOME
,Flutter 會在您的路徑中尋找任何java
可執行檔。一旦 問題 122609 解決,flutter doctor -v
命令會報告所使用的 Java 版本。
- 如果您將 Gradle 升級到高於 7.6.1 的版本,您可能會(雖然不太可能)遇到因 Gradle 變更而產生的問題,例如 已棄用的 Gradle 類別,或 Android 檔案結構的變更,例如 將 ApplicationId 從 PackageName 分割出來。如果發生這種情況,請降級到 7.3 到 7.6.1 之間的 Gradle 版本,包含兩者。
- 升級到 Flutter 3.10 無法解決此問題。
除非另有說明,本網站上的文件反映了 Flutter 的最新穩定版本。頁面最後更新於 2024-11-11。 檢視原始碼 或 回報問題。