当前位置: 首页 > 知识库问答 >
问题:

Cordova版本构建错误:无法从存储区读取密钥示例。..无法恢复密钥

缪朝
2023-03-14

我试图发布一个继承的Cordova项目,该项目已经更新并准备部署,但当我尝试构建一个版本时,它会抛出这个错误:

指挥

cordova build android -- --keystore="D:/keys/example.keystore" --storePassword=******** --alias=example

误差

:transformResourcesWithMergeJavaResForDebug UP-TO-DATE
:validateSigningDebug
:packageDebug FAILED

BUILD FAILED

Total time: 1.836 secs
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':packageDebug'.
> com.android.ide.common.signing.KeytoolException: Failed to read key example from store "D:\Projects\example\app\src\android\platforms\android\..\..\..\..\..\..\..\keys\example.keystore": Cannot recover key

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
(node:6552) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: cmd: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':packageDebug'.
> com.android.ide.common.signing.KeytoolException: Failed to read key example from store "D:\Projects\example\app\src\android\platforms\android\..\..\..\..\..\..\..\keys\example.keystore": Cannot recover key

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
(node:6552) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

因此,我开始研究这个错误,并在StackOverflow上发现了类似的错误,它们都说未能从商店准备 。下面的部分似乎是错误的区别部分,据我所知,这不是重复的,因为其余的似乎都与错误的密码或密钥篡改有关。

我尝试使用标志来获取有关错误的更多信息,例如:--info--debug--stacktrace;他们都没有提供任何见解

发现我可以在Cordova项目中使用./Gradlew SigningReport,但是输出重申它失败了,因为无法恢复密钥

谷歌现在将管理密钥签名,所以我要上传密钥库,并开始遵循需要创建应用程序签名私钥的步骤,这验证了存储密码、别名和密钥密码是正确的,因为我能够创建用于上传的私钥。我还没有上传私钥,因为我不知道如果有任何问题会发生什么,所以我想在继续之前手动进行内部签名

运行keytool-list-v-keystore example.keystore来再次检查别名出于沮丧,我注意到输出底部有一条消息,我使用它以行业标准格式创建了一个新的keystore:

警告:JKS密钥库使用专有格式。建议使用“keytool-importkeystore-srckeystore name-mobileapps.keystore-destkeystore name-mobileapps.keystore-deststoretype PKCS12”迁移到PKCS12这是一种行业标准格式

再次运行版本构建,但是使用更新的密钥存储在构建中的同一点产生了一组新的错误,因此我认为这是错误的:

:validateSigningDebug
:packageDebug FAILED

BUILD FAILED

Total time: 2.224 secs
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':packageDebug'.
> com.android.ide.common.signing.KeytoolException: Failed to read key example from store "D:\Projects\example\app\src\android\platforms\android\..\..\..\..\..\..\..\downloads\example-new.keystore": Get Key failed: Given final block not properly padded

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
(node:20144) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: cmd: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':packageDebug'.
> com.android.ide.common.signing.KeytoolException: Failed to read key example from store "D:\Projects\example\app\src\android\platforms\android\..\..\..\..\..\..\..\downloads\example-new.keystore": Get Key failed: Given final block not properly padded

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
(node:20144) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

问题

我昨天花了一整天想弄清楚这件事。有人能建议如何构建和签署这个版本吗?

共有1个答案

易俊驰
2023-03-14

我不知道为什么使用该命令不能工作,但我确实找到了一种方法,通过执行一系列单独的终端命令来解决它:

  1. Cordova构建--发布Android
  2. jarsigner-verbose-sigalg sha1withrsa-digestalg sha1-keystore d:/keystores/example.keystore./platforms/android/build/outputs/apk/android-release-unsigned.apk example_alias
  3. zipalign-v4./platforms/android/build/outputs/apk/android-release-unsigned.apk./release/example-release-signed.apk
 类似资料:
  • 我在生成签名的Apk时得到了这个异常,我对密钥存储文件没有做任何操作,密码也是正确的。如果我创建了一个新的密钥存储文件。我想将无法在相同的应用程序包上传它到play store上。我不明白我现在要做什么? 错误:任务“:app:PackageFreeRelease”执行失败。从存储区读取密钥失败无法恢复密钥

  • 我正在intellij和Gradle下开发android应用程序。并使用以下方式生成密钥库文件: 然后使用build.gradle中的密钥库文件: 任务“:MyExample:PackageRelease”执行失败。 无法从密钥存储区读取密钥

  • 我试图在android studio中发布一个简单的项目。所以我转到菜单>Build>Build apk。但是我得到了这个错误: 我是Android Studio的新手

  • 我已经搜索了StackOverflow一段时间,但我只是想确定...

  • 我已经开发并上传了我的应用程序到Google Play商店,现在我试图上传更新,但Android Studio不让我创建一个签名的APK,我确信我的密码和别名都是正确的。 会有其他方法来解决这个问题吗?或者有没有办法把Keystore转移到另一个Keystore,这样我就可以在Google Play商店更新我的应用程序 PS.我正在使用Android Studio北极狐,仍然有同样的问题。 任何帮

  • keytool-importkeystore-srckeystore newks.p12-srcstoreType pkcs12-srcstorePass pass-destkeystore exportedjks.jks-deststoreType jks-deststorePass pass 但我会收到以下错误消息: keytool错误:java.Security.UnrecoverableK