flutter升級3.7.3報錯Unable?to?find?bundled?Java?version解決
引言
Android studio 是2020 年的版本,有點老,昨天突發(fā)想法,升級到了 Android Studio Electric Eel 2022.1。
計劃今天和明天寫那個 Flutter WebView 優(yōu)化的文章,這篇是 在 Flutter 中使用 webview_flutter 4.0 | js 交互 的續(xù)集。早上起來,發(fā)現(xiàn) Flutter 有新版本了,版本號是 3.7.3。既然已經(jīng)是第三個小版本了,那應該不會有什么坑了吧,手一抖就開始升級了。
升級過程很順利,一跑應用傻眼了,報錯!
用 flutter doctor 檢查輸出以下信息
flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[?] Flutter (Channel stable, 3.7.3, on macOS 12.5 21G72 darwin-x64, locale zh-Hans-CN)
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
? Android license status unknown.
Run `flutter doctor --android-licenses` to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.
[?] Xcode - develop for iOS and macOS (Xcode 14.2)
[?] Chrome - develop for the web
[!] Android Studio (version 2022.1)
? Unable to find bundled Java version.
[?] VS Code (version 1.75.1)
[?] Connected device (4 available)
[?] HTTP Host Availability
根據(jù)提示,執(zhí)行命令
flutter doctor --android-licenses
然后又報錯了
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/prefs/AndroidLocationsProvider has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
看起來是有兩個 java 起了沖突。用 java_home 命令查了一下,發(fā)現(xiàn)果然有兩個版本存在,11.0 和 1.8。
/usr/libexec/java_home -V
Matching Java Virtual Machines (2):
11.0.14.1 (x86_64) "Amazon.com Inc." - "Amazon Corretto 11" /Users/qihoo/Library/Java/JavaVirtualMachines/corretto-11.0.14.1/Contents/Home
1.8.0_312 (x86_64) "Amazon" - "Amazon Corretto 8" /Users/qihoo/Library/Java/JavaVirtualMachines/corretto-1.8.0_312/Contents/Home
解決的辦法有兩個,一個是刪除老的版本,一個是增加環(huán)境變量 JAVA_HOME。我覺得環(huán)境變量更簡單也更安全,于是在 ~/.bash_profile 中增加 JAVA_HOME 的變量輸出
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home
再次執(zhí)行 flutter doctor --android-licenses,居然好了,大喜,這樣我就不用刪除 java 的老版本了。興沖沖的再次執(zhí)行 flutter doctor,結果被潑了一盆冷水,還是報錯 Unable to find bundled Java versio。任務尚未成功,同志還需努力。
然后在網(wǎng)上碰巧查到有人說新建一個文件夾 jre 把 jbr 中的內(nèi)容都 copy 到 jre中。我一想,如果是名字的問題,那也不用 copy 了,直接建一個軟鏈不是更香嗎?然后嘗試下面的命令。
ln -s /Applications/Android\ Studio.app/Contents/jbr /Applications/Android\ Studio.app/Contents/jre
再次執(zhí)行 flutter doctor 現(xiàn)在是一片綠色,現(xiàn)在看起來格外的順眼。
到這里其實就結束了,但文章顯得有點短,我再閑扯兩個可能遇到的問題。如果你沒有這樣的問題,直接跳過。
還有你可能還會遇到這個錯誤 無法打開“iproxy”,因為無法驗證開發(fā)者。這個解決起來很簡單
sudo xattr -d com.apple.quarantine 你本機的flutter根目錄/bin/cache/artifacts/usbmuxd/iproxy
android studio 新版本的 設置 jdk 的位置變了, 現(xiàn)在移到 gradle setting 了。
build gradle 指定 compileSdkVersion 33報錯
當你在 build gradle 中指定 compileSdkVersion 33 的時候,可能會報錯。
解決的辦法很簡單,安裝最新的 sdk 即可。 找到更新 sdk 的位置分兩步
在 mac 左上角找到 Android Studio,選 Preferences 菜單

- 找到 System Settings 下面的 Android SDK,把 右邊的 Android 13.0 勾選上更新即可。

模擬器也要同步升級。android studio 頂部靠右的手機的圖標,這個是 Device Manager。在下面會列出當前 Device。點右邊的筆形圖標,可以更新 API


再說一個 ios 可能遇到的問題,本老好好的,突然有一天無法 簽名,根據(jù)報錯信息(沒有保留現(xiàn)在場)說我的配置有問題,我查了半天也沒發(fā)現(xiàn)有問題,版本號設置也查了,最小都是 11.0,然后我猜想是不是 apple 開發(fā)者賬號的問題。在網(wǎng)頁登錄開發(fā)者賬號立即彈出同意新協(xié)議的彈窗,同意后,再次 build 簽名成功。
因為 ios 的這個問題沒有記錄,所以無法給出準確的報錯信息了,下次再遇到什么問題都要詳細記下來。小伙伴們遇到哪些問題,還是及時分享的好,這樣其它人遇到了可以節(jié)省很多時間。
如果 flutter build 出現(xiàn)什么問題,第一時間 可以用 flutter clean 處理一下,大部分問題都可以解決。
行了,就這么多了,再久遠的問題也想不起來了。
一看時間都中午了,上午是什么事也做不成了,做飯,吃飯,下午開始寫 在 Flutter 中使用 webview_flutter 4.0 | js 交互 的續(xù)集 Flutter WebView 優(yōu)化。
以上就是flutter升級3.7.3報錯Unable to find bundled Java version解決的詳細內(nèi)容,更多關于flutter升級3.7.3報錯解決的資料請關注腳本之家其它相關文章!
相關文章
flutter 輪播圖動態(tài)加載網(wǎng)絡圖片的方法
Flutter是谷歌的移動UI框架,可以快速在iOS和Android上構建高質量的原生用戶界面。這篇文章主要介紹了flutter 輪播圖動態(tài)加載網(wǎng)絡圖片的方法 ,需要的朋友可以參考下2019-07-07
Android編程實現(xiàn)播放視頻時切換全屏并隱藏狀態(tài)欄的方法
這篇文章主要介紹了Android編程實現(xiàn)播放視頻時切換全屏并隱藏狀態(tài)欄的方法,結合實例形式分析了Android視頻播放事件響應及相關屬性設置操作技巧,需要的朋友可以參考下2017-08-08
SpringBoot實現(xiàn)短信驗證碼登錄功能(案例)
這篇文章主要介紹了SpringBoot實現(xiàn)短信驗證碼登錄功能,本文通過實例代碼給大家介紹的非常詳細,對大家大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-08-08
解決android viewmodel 數(shù)據(jù)刷新異常的問題
這篇文章主要介紹了解決android viewmodel 數(shù)據(jù)刷新異常的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
在android開發(fā)中盡量不要使用中文路徑的問題詳解
本篇文章對在android開發(fā)中盡量不要使用中文路徑的問題進行了詳細的分析介紹。需要的朋友參考下2013-05-05
Android自定義ImageView實現(xiàn)自動放大縮小動畫
這篇文章主要為大家詳細介紹了Android自定義ImageView實現(xiàn)自動放大縮小動畫,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06

