解决Android Studio下flutter使用签名构建失败的问题
在 Android Studio 运行 flutter build apk
命令来构建安装包时,如果使用了签名,我们可能会遇到下面的问题:
1 |
|
本文将介绍这一问题的解决办法
原因分析
出现这一问题的原因是 Android Studio 内置的 JAVA 版本为 JAVA11,但 HmacPBESHA256
是 JAVA12 才加入 keytool
的。Gradle 在构建时使用了 JAVA11(而不是环境变量 JAVA_HOME
所指向的版本),而它不支持 HmacPBESHA256
,导致报错退出。
为了验证我们的猜想,可以在 <project dir>/android/app/build.gradle
的最后加入下面这三行代码,再次运行 flutter build apk
,我们会发现它使用的 JAVA 版本是 JAVA11,而不是环境变量 JAVA_HOME
所指向的版本。
1 |
|
解决方法
所以问题就变得非常简单:我们需要指定 Gradle 所使用的 JAVA 版本
首先查询已经安装的 JAVA 位置:
1 |
|
如果这里显示的是一个 JAVA11 或以下的版本,需要先安装 JAVA12 或以上的版本。
根据 Gradle 文档的指引,我们在 ~/.gradle/gradle.properties
文件中加入以下一行(将 ~
替换为你的用户文件夹,比如 C:\Users\Administrator
)
1 |
|
完成之后,回到项目文件夹运行 flutter build apk
,构建成功。
解决Android Studio下flutter使用签名构建失败的问题