构建 AAB 时出错 - Flutter (Android) - 完整性检查失败: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 不可用

2022-08-31 17:06:55

我正在尝试为我的 flutter 应用构建一个 AAB。我使用以下命令生成了密钥库:

keytool -genkey -v -keystore ~/pc-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias pckey

我有一个key.properties文件,我使用flutter文档中提供的代码引用了它。如何解决这个与Java相关的问题?我的程序引发以下异常

* What went wrong:                                                      
Execution failed for task ':app:signReleaseBundle'.                     
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > Failed to read key pckey from store "/Users/jrperfetto/pc-keystore.jks": Integrity check failed: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available
                                                   

答案 1

我得到同样的错误,我尝试这个命令

keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload -storetype JKS

具有额外属性

-storetype JKS

它帮助我解决我的问题并成功创建捆绑包。

-storetype JKS 标记仅对 Java 9 或更高版本是必需的。从 Java 9 发行版开始,密钥库类型缺省为 PKS12。


答案 2

事实证明,我使用的Java版本与我的应用程序用于构建应用程序所使用的Java版本不同。您可以通过运行 flutter doctor -v 并查看 Java 二进制文件所在的位置,并将其与运行“哪个 java”时进行比较来检查这一点。

解决方案是运行您的注册机命令,前缀为在颤振医生输出中找到的Java bin的位置,如下所示:

/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/keytool -genkey -v -keystore ~/pc-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias pckey

推荐