flutter升級(jí)3.7.3報(bào)錯(cuò)Unable?to?find?bundled?Java?version解決
引言
Android studio 是2020 年的版本,有點(diǎn)老,昨天突發(fā)想法,升級(jí)到了 Android Studio Electric Eel 2022.1。
計(jì)劃今天和明天寫(xiě)那個(gè) Flutter WebView 優(yōu)化的文章,這篇是 在 Flutter 中使用 webview_flutter 4.0 | js 交互 的續(xù)集。早上起來(lái),發(fā)現(xiàn) Flutter 有新版本了,版本號(hào)是 3.7.3。既然已經(jīng)是第三個(gè)小版本了,那應(yīng)該不會(huì)有什么坑了吧,手一抖就開(kāi)始升級(jí)了。
升級(jí)過(guò)程很順利,一跑應(yīng)用傻眼了,報(bào)錯(cuò)!
用 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
然后又報(bào)錯(cuò)了
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
看起來(lái)是有兩個(gè) java 起了沖突。用 java_home 命令查了一下,發(fā)現(xiàn)果然有兩個(gè)版本存在,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
解決的辦法有兩個(gè),一個(gè)是刪除老的版本,一個(gè)是增加環(huán)境變量 JAVA_HOME。我覺(jué)得環(huán)境變量更簡(jiǎ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
,結(jié)果被潑了一盆冷水,還是報(bào)錯(cuò) Unable to find bundled Java versio。任務(wù)尚未成功,同志還需努力。
然后在網(wǎng)上碰巧查到有人說(shuō)新建一個(gè)文件夾 jre 把 jbr 中的內(nèi)容都 copy 到 jre中。我一想,如果是名字的問(wèn)題,那也不用 copy 了,直接建一個(gè)軟鏈不是更香嗎?然后嘗試下面的命令。
ln -s /Applications/Android\ Studio.app/Contents/jbr /Applications/Android\ Studio.app/Contents/jre
再次執(zhí)行 flutter doctor
現(xiàn)在是一片綠色,現(xiàn)在看起來(lái)格外的順眼。
到這里其實(shí)就結(jié)束了,但文章顯得有點(diǎn)短,我再閑扯兩個(gè)可能遇到的問(wèn)題。如果你沒(méi)有這樣的問(wèn)題,直接跳過(guò)。
還有你可能還會(huì)遇到這個(gè)錯(cuò)誤 無(wú)法打開(kāi)“iproxy”,因?yàn)闊o(wú)法驗(yàn)證開(kāi)發(fā)者。這個(gè)解決起來(lái)很簡(jiǎn)單
sudo xattr -d com.apple.quarantine 你本機(jī)的flutter根目錄/bin/cache/artifacts/usbmuxd/iproxy
android studio 新版本的 設(shè)置 jdk 的位置變了, 現(xiàn)在移到 gradle setting 了。
build gradle 指定 compileSdkVersion 33報(bào)錯(cuò)
當(dāng)你在 build gradle 中指定 compileSdkVersion 33 的時(shí)候,可能會(huì)報(bào)錯(cuò)。
解決的辦法很簡(jiǎn)單,安裝最新的 sdk 即可。 找到更新 sdk 的位置分兩步
在 mac 左上角找到 Android Studio,選 Preferences 菜單
- 找到 System Settings 下面的 Android SDK,把 右邊的 Android 13.0 勾選上更新即可。
模擬器也要同步升級(jí)。android studio 頂部靠右的手機(jī)的圖標(biāo),這個(gè)是 Device Manager。在下面會(huì)列出當(dāng)前 Device。點(diǎn)右邊的筆形圖標(biāo),可以更新 API
再說(shuō)一個(gè) ios 可能遇到的問(wèn)題,本老好好的,突然有一天無(wú)法 簽名,根據(jù)報(bào)錯(cuò)信息(沒(méi)有保留現(xiàn)在場(chǎng))說(shuō)我的配置有問(wèn)題,我查了半天也沒(méi)發(fā)現(xiàn)有問(wèn)題,版本號(hào)設(shè)置也查了,最小都是 11.0,然后我猜想是不是 apple 開(kāi)發(fā)者賬號(hào)的問(wèn)題。在網(wǎng)頁(yè)登錄開(kāi)發(fā)者賬號(hào)立即彈出同意新協(xié)議的彈窗,同意后,再次 build 簽名成功。
因?yàn)?ios 的這個(gè)問(wèn)題沒(méi)有記錄,所以無(wú)法給出準(zhǔn)確的報(bào)錯(cuò)信息了,下次再遇到什么問(wèn)題都要詳細(xì)記下來(lái)。小伙伴們遇到哪些問(wèn)題,還是及時(shí)分享的好,這樣其它人遇到了可以節(jié)省很多時(shí)間。
如果 flutter build 出現(xiàn)什么問(wèn)題,第一時(shí)間 可以用 flutter clean 處理一下,大部分問(wèn)題都可以解決。
行了,就這么多了,再久遠(yuǎn)的問(wèn)題也想不起來(lái)了。
一看時(shí)間都中午了,上午是什么事也做不成了,做飯,吃飯,下午開(kāi)始寫(xiě) 在 Flutter 中使用 webview_flutter 4.0 | js 交互 的續(xù)集 Flutter WebView 優(yōu)化。
以上就是flutter升級(jí)3.7.3報(bào)錯(cuò)Unable to find bundled Java version解決的詳細(xì)內(nèi)容,更多關(guān)于flutter升級(jí)3.7.3報(bào)錯(cuò)解決的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android 跨進(jìn)程模擬按鍵(KeyEvent )實(shí)例詳解
這篇文章主要介紹了Android 跨進(jìn)程模擬按鍵(KeyEvent )實(shí)例詳解的相關(guān)資料,類(lèi)似手機(jī)遙控器的需求就可以這么做,需要的朋友可以參考下2016-11-11Android從系統(tǒng)Gallery獲取圖片具體實(shí)現(xiàn)
這篇文章主要介紹了Android從系統(tǒng)Gallery獲取圖片具體實(shí)現(xiàn),有需要的朋友可以參考一下2013-12-12朋友圈實(shí)現(xiàn)圖片+文字轉(zhuǎn)發(fā)功能(必看篇)
下面小編就為大家?guī)?lái)一篇朋友圈實(shí)現(xiàn)圖片+文字轉(zhuǎn)發(fā)功能(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03親自動(dòng)手編寫(xiě)Android通用刷新控件
這篇文章主要記錄了親自動(dòng)手編寫(xiě)Android通用刷新控件的詳細(xì)過(guò)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Flutter在項(xiàng)目中使用動(dòng)畫(huà)不使用包實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Flutter在項(xiàng)目中使用動(dòng)畫(huà)不使用包實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Android開(kāi)發(fā)簡(jiǎn)易音樂(lè)播放器
這篇文章主要為大家詳細(xì)介紹了Android開(kāi)發(fā)簡(jiǎn)易音樂(lè)播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12全面解析Android系統(tǒng)指紋啟動(dòng)流程
這篇文章主要介紹了全面解析Android系統(tǒng)指紋啟動(dòng)流程,對(duì)Android啟動(dòng)原理感興趣的同學(xué)可以參考下2021-04-04Andriod事件分發(fā)事件由來(lái)初識(shí)
這篇文章主要為大家講解了Andriod事件分發(fā)事件由來(lái)的初步認(rèn)識(shí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Android實(shí)例代碼理解設(shè)計(jì)模式SOLID六大原則
程序設(shè)計(jì)領(lǐng)域, SOLID (單一功能、開(kāi)閉原則、里氏替換、接口隔離以及依賴(lài)反轉(zhuǎn))是由羅伯特·C·馬丁在21世紀(jì)早期 引入的記憶術(shù)首字母縮略字,指代了面向?qū)ο缶幊毯兔嫦驅(qū)ο笤O(shè)計(jì)的基本原則2021-10-10