flutter升级3.7.3报错Unable to find bundled Java version解决

目录
  • 引言
  • 升级过程很顺利,一跑应用傻眼了,报错!
  • build gradle 指定 compileSdkVersion 33报错

引言

Android studio 是2020 年的版本,有点老,昨天突发想法,升级到了 Android Studio Electric Eel 2022.1。

计划今天和明天写那个 Flutter WebView 优化的文章,这篇是 在 Flutter 中使用 webview_flutter 4.0 | js 交互 的续集。早上起来,发现 Flutter 有新版本了,版本号是 3.7.3。既然已经是第三个小版本了,那应该不会有什么坑了吧,手一抖就开始升级了。

升级过程很顺利,一跑应用傻眼了,报错!

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

根据提示,执行命令

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 命令查了一下,发现果然有两个版本存在,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

解决的办法有两个,一个是删除老的版本,一个是增加环境变量 JAVA_HOME。我觉得环境变量更简单也更安全,于是在 ~/.bash_profile 中增加 JAVA_HOME 的变量输出

export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home

再次执行 flutter doctor --android-licenses,居然好了,大喜,这样我就不用删除 java 的老版本了。兴冲冲的再次执行 flutter doctor,结果被泼了一盆冷水,还是报错 Unable to find bundled Java versio。任务尚未成功,同志还需努力。

然后在网上碰巧查到有人说新建一个文件夹 jre 把 jbr 中的内容都 copy 到 jre中。我一想,如果是名字的问题,那也不用 copy 了,直接建一个软链不是更香吗?然后尝试下面的命令。

ln -s /Applications/Android\ Studio.app/Contents/jbr /Applications/Android\ Studio.app/Contents/jre

再次执行 flutter doctor 现在是一片绿色,现在看起来格外的顺眼。

到这里其实就结束了,但文章显得有点短,我再闲扯两个可能遇到的问题。如果你没有这样的问题,直接跳过。

还有你可能还会遇到这个错误 无法打开“iproxy”,因为无法验证开发者。这个解决起来很简单

sudo xattr -d com.apple.quarantine 你本机的flutter根目录/bin/cache/artifacts/usbmuxd/iproxy

android studio 新版本的 设置 jdk 的位置变了, 现在移到 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 可能遇到的问题,本老好好的,突然有一天无法 签名,根据报错信息(没有保留现在场)说我的配置有问题,我查了半天也没发现有问题,版本号设置也查了,最小都是 11.0,然后我猜想是不是 apple 开发者账号的问题。在网页登录开发者账号立即弹出同意新协议的弹窗,同意后,再次 build 签名成功。

因为 ios 的这个问题没有记录,所以无法给出准确的报错信息了,下次再遇到什么问题都要详细记下来。小伙伴们遇到哪些问题,还是及时分享的好,这样其它人遇到了可以节省很多时间。

如果 flutter build 出现什么问题,第一时间 可以用 flutter clean 处理一下,大部分问题都可以解决。

行了,就这么多了,再久远的问题也想不起来了。

一看时间都中午了,上午是什么事也做不成了,做饭,吃饭,下午开始写 在 Flutter 中使用 webview_flutter 4.0 | js 交互 的续集 Flutter WebView 优化。

以上就是flutter升级3.7.3报错Unable to find bundled Java version解决的详细内容,更多关于flutter升级3.7.3报错解决的资料请关注我们其它相关文章!

(0)

相关推荐

  • Android studio 切换flutterSDK之后报错及解决办法(推荐)

    Windows系统上面修改了flutter sdk的环境变量地址之后Android studio上面运行flutter项目就会报错 类似于: Could not read script XXX\flutter.gradle' as it does not exist. 还有这样:flutter:Warning! The 'flutter' tool you are currently running is from a different Flutter repository 解决办法: 1.首

  • js 交互在Flutter 中使用 webview_flutter

    目录 正文 环境准备 最简示例 WebView 的小大 网页自己报告高度 无法修改页面 在网页中调用 Flutter 页面 拦截 url js 调用 JavaScriptChannel 定义的方法 总结 正文 已经有很多关于 Flutter WebView 的文章了,为什么还要写一篇.两个原因: Flutter WebView 是 Flutter 开发的必备技能 现有的文章都是关于老版本的,新版本 4.x 有了重要变化,基于 3.x 的代码很多要重写. WebView 的文章分两篇 在 Flut

  • android studio 3.6.1升级后如何处理 flutter问题

    前提条件介绍 1.android-studio-3.6.1 死丢丢 配置了dart 和flutter插件 在 3.5.3时 成功运行过flutter工程 2.flutter 版本 Flutter 1.12.13+hotfix.8 • channel stable • https://github.com/flutter/flutter.git Framework • revision 0b8abb4724 (5 weeks ago) • 2020-02-11 11:44:36 -0800 Eng

  • flutter升级3.7.3报错Unable to find bundled Java version解决

    目录 引言 升级过程很顺利,一跑应用傻眼了,报错! build gradle 指定 compileSdkVersion 33报错 引言 Android studio 是2020 年的版本,有点老,昨天突发想法,升级到了 Android Studio Electric Eel 2022.1. 计划今天和明天写那个 Flutter WebView 优化的文章,这篇是 在 Flutter 中使用 webview_flutter 4.0 | js 交互 的续集.早上起来,发现 Flutter 有新版本了

  • vps报错Unable to make the session state request

    客户反应vps报错Unable to make the session state request,我司技术将解决方法总结如下,希望可以帮助更多的人解决"Unable to make the session state request"难题. 一.[Unable to make the session state request问题] 页面打开时,出现如果下错误.处理方法.或者登陆后不久,频繁的返回到了登录界面 登录Server Error in '/' Application. 复制

  • Android Studio报错unable to access android sdk add-on list解决方案

    一.问题 初次安装Android Studio,启动后,报错如下: unable to access android sdk add-on lis 如图: 二.原因 AS启动后,会在默认路径下检测是否有Android SDK,如果没有的话,就会报上述错误. 三.解决方案 3.1 主动设置SDK 如果本机有Android SDK的话,可以点击cancel跳过,在下一个界面手动选择本地SDK目录就可以了. 3.2 跳过检测 在Android Studio的安装目录下,找到\bin\idea.prop

  • IDEA报错:Unable to save settings Failed to save settings

    今天打开IDEA时,出现了"Unable to save settings Failed to save settings"异常,百度了一下,发现大部分都是说卸载"identifier Highlighter"插件,但是我并没有安装这个插件,所以在翻找了好久之后,终于是解决了问题,在此下一下我的解决经验. IDEA这个报错翻译过来就是:"保存设置失败",至于是为什么失败,并没有在此处说明,但是IDEA把具体原因放到了他的日志文件中,所以只要我们找

  • mysql登录报错提示:ERROR 1045 (28000)的解决方法

    本文分析了mysql登录报错提示:ERROR 1045 (28000)的解决方法.分享给大家供大家参考,具体如下: 一.问题: 公司linux系统的mysql数据库root用户设置过密码,但常常用命令'mysql -u root -p'登录报错,有时又能登录.登录报错信息为: [root@localhost ~]# mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localho

  • pip matplotlib报错equired packages can not be built解决

    pip安装matplotlib 在centos6.5 64bit上用pip安装matplotlib时候报错: * The following required packages can not be built: * freetype, png error: Setup script exited with 1 这是因为pip不能安装操作系统的依赖库导致的,需要用yum手动安装: $ yum -y install freetype-devel libpng-devel 如果不知道这些库需要安装的

  • Python使用pickle模块报错EOFError Ran out of input的解决方法

    本文实例讲述了Python使用pickle模块报错EOFError Ran out of input的解决方法.分享给大家供大家参考,具体如下: 遇到了 EOFError:Ran out of input 不到为什么这样,最后用捕获异常的办法解决掉了,暂时对程序本身没有啥影响,代码如下: # coding=utf-8 import pickle def usr_date(): try: with open('usr_date.pkl','rb') as f: return pickle.load

  • 安装CentOS 6.x报错"Disk sda contains BIOS RAID metadata"解决方法

    今天在安装CentOS6.2的时候,当进到检测硬盘的时候,总是过不去,报错如下: Disk sda contains BIOS RAID metadata, but is not part of any recognized BIOS RAID sets. Ignoring disk sda 这种情况在Ubuntu,SUSE都有类似的情况,只是提示不太一样. 有时候是sda,有时候是sdb. 感觉是这块硬盘以前是做过raid,现在不认.怎么办. 进入安装选择菜单时 按TAB键,会进入到Linux

  • Maven install 报错"程序包不存在"问题的解决方法

    概述 在mvn clean install时,控制台各种报错,大概有: java:[8,52] 程序包com.xxx不存在 java:[98,27] 找不到符号 符号: 类 XXX 位置: 类XXX [ERROR] COMPILATION ERROR : Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure  at org.apache.maven.plugin.c

  • Python报错:PermissionError: [Errno 13] Permission denied的解决办法

    问题描述: 我一直用python处理气象数据,之前写过一个处理气象数据的程序,一直都可以用的,可是昨天我再想处理数据的时候提示我如下错误 Traceback (most recent call last): ...中间忽略 File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xarray\backends\file_manager.py", line 205,

随机推荐