flutter获取android证书时一类java版本问题解决方法

背景

在按照flutter官方的环境配置文档配置环境时,在获取安卓证书时,出现以下错误:Java version 17 or higher is required。

但实际上通过java --version查看,我已经安装了java 17。

出现问题的原因

运行flutter doctor -v,查看flutter所需环境的版本信息。

可以发现安卓平台的JRE版本为11,这就是问题所在:

根据https://www.soinside.com/question/JJPxKaH2NGGEyjjWCUTWMN以及flutter的github项目中一个issue,得知flutter遵循以下 JDK 安装搜索条件:

1) the JDK bundled with the latest installation of Android Studio,
2) the JDK found at the directory found in the JAVA_HOME environment variable, and
3) the directory containing the java binary found in the user's path.

其中前两条说的是,优先根据 android studio绑定的环境,其次才是JAVA_HOME。而我的安卓平台的绑定java版本不足,需要使用JAVA_HOME。

解决方案及注意事项

据说可以通过更新安卓平台解决,但我采用了另一种不更新的方式。

据前面的提到的网址,flutter增加了一个java配置选项,使用如下指令可以修改java环境。

flutter config --jdk-dir=$JAVA_HOME

但我执行之后重新获取证书,报错信息变为下图:

后来偶然发现,这是因为等于号后面其实是路径参数,并且等于可以以空格代替。而和别人用的平台不同,需要根据自己的操作系统调用环境变量。在windows中,可以使用:

flutter config --jdk-dir %JAVA_HOME%

但此时又出现报错(下图红色部分),这是因为我的路径里面还有空格,路径被识别为多个参数。

所以还需要给环境变量加上引号,如图中第二条白色指令。之后,重新获取授权,至此问题解决。

另外,我个人对命令行不太熟悉,不太清楚是不是真正绑定了跟随系统的环境变量。我怀疑这里使用环境变量可能是类似于宏的替换,所以有可能可以直接写文件路径。(理由是我曾试图用flutter config --jdk-dir -h 获取命令帮助,结果它把--jdk-dir的值直接设置为-h了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值