问题描述
当我尝试使用 flutter build appbundle 构建 .aab 文件但失败时,我得到了下面的标题和文本:
java.util.concurrent.ExecutionException: java.lang.RuntimeException: jarsignerfailed with exit code 1 : jarsigner:找不到证书链:keystore。 keystore 必须引用包含私钥和相应公钥证书链的有效 KeyStore 密钥条目。
我不得不重置我的签名密钥。谷歌开发人员支持让我使用以下命令行生成一个新的 .jks 文件,我从我的项目文件夹中运行该文件:
keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks
然后他指示我使用以下命令将此文件转换为 .pem 文件:
keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks
然后我通过电子邮件向他发送了 upload_certificate.pem 文件。我立即注意到侧栏中的 keystore.jks 文件是红色的,点击它后我得到了这个:
“文件‘keystore.jks’未与任何文件类型关联。请定义关联:”
.pem 文件也是红色的,但点击它会显示构成密钥的文本。
我是否需要再次重置签名密钥并做一些不同的事情?有没有办法解决导致此错误的问题?
解决方法
尽管这听起来很愚蠢,但我花了 24 小时在这上面,我所要做的就是输入 flutter clean
您的 key.properties 中有 keyAlias=keystore
,而您创建的别名看起来像是命名为 upload
(参见您的 keytool export
命令)。
替换为 keyAlias=upload
,如果您的密码正确,这应该可以工作。