在终端项目根目录下面运行
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的
然后看哪里有警告的话,就按照提示来。
根据提示提示第一个是没安装cmdline-tools,也给出了命令的语句尴尬的是我不知道这个命令行咋用,Run path/to/sdkmanager --install "cmdline-tools;latest"
看着个意思应该是写上sdkmanager的路径 然后后面跟–install “cmdline-tools;latest”。但是我死活找不到这个路径在哪里,然后我写的是android sdk的路径不行,这个方法行不通,那就来到下一个直接用android studio自带的快捷方式不就好了吗,在sdkmanager把cmdline-tools的勾打上,然后就会去下载了,之后在运行一遍flutter doctor发现错误就没了。
我这边上一个问题解决了,这个一起消失,但是如果你们没消失的话,运行它提示的那个语句就行了,那个语句是不需要自己改动的
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的版本高了,插件用了废弃的方法,最好是去升级一下插件,但是如果开发者没有开发新的版本,其实也没事,只是每次都会提示,但是不会对代码造成影响。
这个问题看了网上说的,都说要具体问题具体分析
需要在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的版本号,所以毅然决然决定去重新下载并覆盖
但是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
去看看是不是在manifest里面有没有类似的语句,把它注释掉
由于之前不是升级到更高的版本了吗,然后又会退到一个稍微低一点的版本,说是flutter的环境需要重置一下,确实重置之后就ok
参考博客 https://blog.csdn.net/hjr365708064/article/details/108489686
反正就是现在的代码支持null safety 但是有的插件太老啦,但是又没有新版本,那在编译的时候就会报这个。除了改插件,要不就是在run这里设置一下
参考博客 https://www.jianshu.com/p/9850f0f4e3cc