Mac 电脑 Flutter SDK如何升级 以及出现的错误(从没有null safety 到有null safety)

Flutter SDK升级两种方法

  • 1.删掉原本的sdk 然后重下
  • 2.用 android studio 的命令 (stable 2.5.3至今最新)
  • 3错误
    • 3.1 cmdline-tools component is missing
    • 3.2 Android license status unknown.
    • 3.3 The plugins `barcode_scan_fix, flutter_bmflocation, launch_review` use a deprecated version of the Android embedding.
    • 3.4 Execution failed for task ':permission_handler:compileDebugJavaWithJavac'.
  • 4 回退了stable 2.2.3
    • 问题The build failed likely due to AndroidX incompatibilities in a plugin. The tool is about to try using Jetifier to solve the incompatibility.
    • The minCompileSdk (31) specified in a dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
    • WorkManager is already initialized.
    • The specified language version is too high. The highest supported language version
    • Error: Cannot run with sound null safety, because the following dependencies

1.删掉原本的sdk 然后重下

2.用 android studio 的命令 (stable 2.5.3至今最新)

在终端项目根目录下面运行
flutter upgrade

然后可能会报提示语句
Your flutter checkout has local changes that would be erased by upgrading. If you want to keep these changes, it is recommended that you stash them via “git stash” or else commit the changes to a
local branch. If it is okay to remove local changes, then re-run this command with --force.

问你要不要保留之前的改变,如果不介意的话直接用
flutter upgrade --force
继续进行

然后开始安装了,安装完成之后会自动进行flutter doctor的Mac 电脑 Flutter SDK如何升级 以及出现的错误(从没有null safety 到有null safety)_第1张图片

然后看哪里有警告的话,就按照提示来。

3错误

3.1 cmdline-tools component is missing

根据提示提示第一个是没安装cmdline-tools,也给出了命令的语句尴尬的是我不知道这个命令行咋用,Run path/to/sdkmanager --install "cmdline-tools;latest"

看着个意思应该是写上sdkmanager的路径 然后后面跟–install “cmdline-tools;latest”。但是我死活找不到这个路径在哪里,然后我写的是android sdk的路径不行,这个方法行不通,那就来到下一个直接用android studio自带的快捷方式不就好了吗,在sdkmanager把cmdline-tools的勾打上,然后就会去下载了,之后在运行一遍flutter doctor发现错误就没了。
Mac 电脑 Flutter SDK如何升级 以及出现的错误(从没有null safety 到有null safety)_第2张图片
Mac 电脑 Flutter SDK如何升级 以及出现的错误(从没有null safety 到有null safety)_第3张图片

3.2 Android license status unknown.

我这边上一个问题解决了,这个一起消失,但是如果你们没消失的话,运行它提示的那个语句就行了,那个语句是不需要自己改动的

3.3 The plugins barcode_scan_fix, flutter_bmflocation, launch_review use a deprecated version of the Android embedding.

To avoid unexpected runtime failures, or future build failures, try to see if these plugins support the Android V2 embedding. Otherwise, consider removing them since a future release of Flutter will remove these deprecated APIs.
If you are plugin author, take a look at the docs for migrating the plugin to the V2 embedding: https://flutter.dev/go/android-plugin-migration.

其实这个就是flutter sdk的版本高了,插件用了废弃的方法,最好是去升级一下插件,但是如果开发者没有开发新的版本,其实也没事,只是每次都会提示,但是不会对代码造成影响。

3.4 Execution failed for task ‘:permission_handler:compileDebugJavaWithJavac’.

这个问题看了网上说的,都说要具体问题具体分析
需要在android studio 终端 输入
gradlew compileDebugJavaWithJava 去看具体的问题

但是我的mac 电脑报错gradlew: command not found
查找了原因,说是可能是没配置gradle的环境变量
找到gradle的路径,通常情况下是在
/Users/mac/.gradle/wrapper/dists/gradle-4.10.2-all
当然这里的Mac要替换成你自己的登陆的用户名,然后gradle-4.10.2-all是你自己采用的gradle的版本。
找到路径就开始配置
https://www.jianshu.com/p/b78d0eec430a 具体配置的方法。

配置完成后,在mac电脑里面gradle -v查询可以查到gradle但是在android studio的终端里面却不行,那必然是没有重启Android studio啦。果然,重启之后一切ok

然后继续运行gradlew compileDebugJavaWithJava
还是说不行,这是为什么?

3.4.1.在mac电脑中gradlew命令需要加上./
./gradlew compileDebugJavaWithJava (也还是不行)

3.4.2.路径不在项目的根目录。 (flutter必须在项目目录的android目录下)
没错,我看的都是android 原生开发, 然后确实在项目的根目录,但是还是报错,然后转念一想,我这是flutter呀,当然类比过来应该是在项目目录中的android目录中才对。没错就是这个问题,之后就可以用命令啦。

新的问题诞生 Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation.

解决办法:把jdk中的 home/lib下面的tools.jar 拷贝到对应的目录
参考网址:https://blog.csdn.net/GUO_NULL192/article/details/119649802

好了 终于可以啦,没错可以啦,但是虽然能输出错误啦,但是还是没看懂。看有人说是jdk版本和sdk对不上,我是1.8jdk的版本,最后想着是不是flutter sdk版本过高了,另一台电脑好像版本低一点可以的,然后就降级呗。
升级在终端很方便,但是降级好像要找到git的版本号,所以毅然决然决定去重新下载并覆盖

4 回退了stable 2.2.3

问题The build failed likely due to AndroidX incompatibilities in a plugin. The tool is about to try using Jetifier to solve the incompatibility.

Mac 电脑 Flutter SDK如何升级 以及出现的错误(从没有null safety 到有null safety)_第4张图片

但是gradle.properties确实写着启用呀
android.useAndroidX=true
android.enableJetifier=true

然后又看仔细看红色的问题unexpected element found in .
查询了网上的资料,说是build.gradle设置的插件版本必须是4.1.0以上,然后相应的android 4.1以上,然后gradle也要设置和gradle的插件相匹配的版本,对于4.1.0那可以选择,所以在gradle-wrapper.properties去要配置6.5+的。那我选择配置distributionUrl=https://services.gradle.org/distributions/gradle-6.7-all.zip
Mac 电脑 Flutter SDK如何升级 以及出现的错误(从没有null safety 到有null safety)_第5张图片

The minCompileSdk (31) specified in a dependency’s AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)

都说最小了31了还能咋地,只能
Mac 电脑 Flutter SDK如何升级 以及出现的错误(从没有null safety 到有null safety)_第6张图片

WorkManager is already initialized.

去看看是不是在manifest里面有没有类似的语句,把它注释掉
Mac 电脑 Flutter SDK如何升级 以及出现的错误(从没有null safety 到有null safety)_第7张图片

The specified language version is too high. The highest supported language version

由于之前不是升级到更高的版本了吗,然后又会退到一个稍微低一点的版本,说是flutter的环境需要重置一下,确实重置之后就ok

参考博客 https://blog.csdn.net/hjr365708064/article/details/108489686

Error: Cannot run with sound null safety, because the following dependencies

反正就是现在的代码支持null safety 但是有的插件太老啦,但是又没有新版本,那在编译的时候就会报这个。除了改插件,要不就是在run这里设置一下

参考博客 https://www.jianshu.com/p/9850f0f4e3cc

你可能感兴趣的:(Flutter,flutter)