Linux 上安装 Flutter 以及启动项目遇到的问题

系统介绍:

deepin 20.9

遇到的问题:

问题1:打开一个终端 输入 flutter,出现未找到此命令

image.png
执行 source ~/.zshrc 才生效,打开另一个终端也要执行source ~/.zshrc才生效
Linux 上安装 Flutter 以及启动项目遇到的问题_第1张图片

解决:
查看当前的shell

echo $SHELL #在终端输入

Linux 上安装 Flutter 以及启动项目遇到的问题_第2张图片
而我是在.zshrc 文件配置的环境变量,导致的问题。
因为我的shellbash, 所以要在.baserc文件设置变量,
重新加载配置文件。

source ~/.bashrc   # 如果你使用的是bash
source ~/.zshrc    # 如果你使用的是zsh

问题2: flutter doctor 按照提示配置环境

Linux 上安装 Flutter 以及启动项目遇到的问题_第3张图片

2.1 Android license status unknown

大概的意思是“没有接受 Android SDK 的许可证
image.png

执行 flutter doctor --android-licenses后:出现
错误: 加载主类
image.png

com.android.sdklib.tool.sdkmanager.SdkManagerCli 时出现 LinkageError         java.lang.UnsupportedClassVersionError: com/android/sdklib/tool/sdkmanager/SdkManagerCli has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0

大概错误就是 表明Java版本不兼容Android SDK,错误消息中显示的Java Runtime版本是61.0,这是Java 17的版本。

可以看到我使用的jdk是11,并且已经正确手动设置了jdk11的路径
image.png
image.png

解决:打开android studio -> 点击设置的小图标 -> 选择SDkManage
使用Android Studio SDK管理器安装Android SDK命令行工具8.0
Linux 上安装 Flutter 以及启动项目遇到的问题_第4张图片
Linux 上安装 Flutter 以及启动项目遇到的问题_第5张图片

下载成功后找到SDK文件的位置:可以看到我这里多了一个8.0的文件,删除 latest 文件把8.0文件名称改成latest

 #我的系统是deepin 目录如下
/home/zhang/Android/Sdk/cmdline-tools 

Linux 上安装 Flutter 以及启动项目遇到的问题_第6张图片
Linux 上安装 Flutter 以及启动项目遇到的问题_第7张图片
再次执行 flutter doctor --android-licenses。一路下去都输入y,前面两个错误都解决了

2.2,最后一个问题,也是最重要的问题

Unable to find bundled Java version 没有绑定到java版本
找到安装android-studio目录在改目录下执行

ln -s jbr jre #创建一个名为jre的符号链接,指向jbr目录

image.png

flutter doctor

最终结果如下:
Linux 上安装 Flutter 以及启动项目遇到的问题_第8张图片

问题3:

因为项目中使用的是jdk11,而我去android studio里面怎么设置我都绑定不了jdk11,一直绑定的是jdk17,就有了如下操作,最后设置了jdk11,但是关闭软件后就怎么也打不开了,
我是这么设置jdk11的:
找到安装android studio的路径,在找到jbr文件(存放java文件的)
我删除了全部内容,把jdk11复制上去了,最后绑定了jdk11了,但是我只要关闭软件,在打开就会报错。
Linux 上安装 Flutter 以及启动项目遇到的问题_第9张图片

解决:撤回之前的操作,jbr里面的java配置不要动,删除之前创建的jre链接,创建jre文件,里面存放jdk11,这样就解决了项目是jdk11的问题,然后还可以打开android studio。

问题四:设置gradle的jdk为11

Linux 上安装 Flutter 以及启动项目遇到的问题_第10张图片
当前版本是jdk17,目标版本是jdk11,
Google上的都是这样子的:
Linux 上安装 Flutter 以及启动项目遇到的问题_第11张图片

而我的是这样子的:
Linux 上安装 Flutter 以及启动项目遇到的问题_第12张图片
!!!根本就没有这个框框给我选择jdk

解决:在.bashrc 文件中设置了jdk11的路径,这样我的gradle的jdk就为11了。
image.png

问题5: Algorithm HmacPBESHA256 not available

image.png
这个问题是由于缺少Java环境变量或Android jdk与已设置的Java环境变量版本不匹配导致的。前面是jdk17进行加密,后面用jdk11进行解密。所以才会保这种错误,删除了keystor ,使用flutter clean清除了所有的构建。重新生成了keystor,还是会出先上述错误,最后是从新拉的整个项目,在重新生成keystor,最后解决了。猜测:项目中的某些文件还是存储了有关keystor的文件

问题6:
Linux 上安装 Flutter 以及启动项目遇到的问题_第13张图片

创建这个目录的时候失败了,第一眼看到这个目录就很奇怪,查了下是Mac的目录,我的系统是deepin 是linux。而linux的用户文件都是在home目录下的

解决:使用ctrl+shift+r 找到所有以/Users/apple/.. 打头的,替换成 /home/zhujie/User/apple/.. 问题就解决了,最后终于就可以启动我的项目了。
草稿

总结:

对环境变量更有了一定的了解。
deepin系统环境都是在bashrc。
在android studio里面启动项目是以jre文件找java文件的。

参考文献:

https://stackoverflow.com/questions/51281702/unable-to-find-bundled-java-version-on-flutter

https://stackoverflow.com/questions/76882205/error-linkageerror-occurred-while-loading-main-class-com-android-sdklib-tool-sd

你可能感兴趣的:(flutter)