首页 > 解决方案 > 如何解决“无效的密钥库异常”?

问题描述

我准备在 Google Play 商店中发布我的应用程序,并想在生成签名的 APK 后最后检查它是否有效。但是,我收到以下错误。

有什么解决办法吗?

org.gradle.api.tasks.TaskExecutionException: Execution failed for task
':android:packageRelease'. 

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
        at java.lang.Thread.run(Thread.java:745)


Caused by: org.gradle.tooling.BuildException: Failed to read key
shaperecognisingreleasekey from store
  "C:\Users\Albrecht\Documents\Apps\ShapeRecognisingGame\android\release\android-release.apk":
  Invalid keystore format
        at com.android.build.gradle.internal.scope.BuildElements$ExecutorBasedScheduler$transform$2.invoke(BuildElements.kt:133)
        at com.android.build.gradle.internal.scope.BuildElements$ExecutorBasedScheduler$transform$2.invoke(BuildElements.kt:110)
        at kotlin.sequences.SequencesKt___SequencesKt$onEach$1.invoke(_Sequences.kt:1260)
        at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:149)
        at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:109)
        at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:133)
        at kotlin.sequences.TransformingSequence$iterator$1.hasNext(Sequences.kt:153)
        at kotlin.sequences.SequencesKt___SequencesKt.toCollection(_Sequences.kt:633)
        at kotlin.sequences.SequencesKt___SequencesKt.toMutableList(_Sequences.kt:663)
        at kotlin.sequences.SequencesKt___SequencesKt.toList(_Sequences.kt:654)
        at com.android.build.gradle.internal.scope.BuildElements$ExecutorBasedScheduler.transform(BuildElements.kt:140)
        at com.android.build.gradle.internal.scope.BuildElements$ExecutorBasedScheduler.into(BuildElements.kt:115)
        at com.android.build.gradle.internal.scope.BuildElementActionScheduler.into(BuildElementActionScheduler.kt:32)
        at com.android.build.gradle.tasks.PackageAndroidArtifact.doFullTaskAction(PackageAndroidArtifact.java:393)
        at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:106)


Caused by: com.android.ide.common.signing.KeytoolException: Failed to
read key shaperecognisingreleasekey from store
  "C:\Users\Albrecht\Documents\Apps\ShapeRecognisingGame\android\release\android-release.apk":
  Invalid keystore format
        at com.android.ide.common.signing.KeystoreHelper.getCertificateInfo(KeystoreHelper.java:212)
        at com.android.build.gradle.internal.packaging.IncrementalPackagerBuilder.withSigning(IncrementalPackagerBuilder.java:161)
        at com.android.build.gradle.tasks.PackageAndroidArtifact.doTask(PackageAndroidArtifact.java:646)
        at com.android.build.gradle.tasks.PackageAndroidArtifact.splitFullAction(PackageAndroidArtifact.java:496)
        at com.android.build.gradle.tasks.PackageAndroidArtifact.lambda$doFullTaskAction$2(PackageAndroidArtifact.java:388)
        at com.android.build.gradle.internal.scope.BuildElements$ExecutorBasedScheduler$transform$$inlined$forEach$lambda$1.call(BuildElements.kt:121)
        at com.android.build.gradle.internal.scope.BuildElements$ExecutorBasedScheduler$transform$$inlined$forEach$lambda$1.call(BuildElements.kt:110)
        at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
        at java.util.concurrent.ForkJoinTask.externalAwaitDone(ForkJoinTask.java:326)
        at java.util.concurrent.ForkJoinTask.doJoin(ForkJoinTask.java:391)
        at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:719)
        at com.android.ide.common.internal.WaitableExecutor.waitForAllTasks(WaitableExecutor.java:215)
        at com.android.build.gradle.internal.scope.BuildElements$ExecutorBasedScheduler.transform(BuildElements.kt:125)



Caused by: java.io.IOException: Invalid keystore format
        at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:658)
        at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56)
        at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224)
        at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70)
        at java.security.KeyStore.load(KeyStore.java:1445)
        at com.android.ide.common.signing.KeystoreHelper.getCertificateInfo(KeystoreHelper.java:190)

标签: android

解决方案


看起来它正在尝试使用 APK 文件作为密钥库:

Caused by: org.gradle.tooling.BuildException: Failed to read key shaperecognisingreleasekey from store

"C:\Users\Albrecht\Documents\Apps\ShapeRecognisingGame\android\release\android-release.apk": Invalid keystore format at 

您告诉构建工具 APK 是密钥库。您需要返回并阅读有关如何生成密钥库的说明,并确保告诉构建工具您的密钥库在哪里。还要绝对确保您有密钥库的备份副本并且您知道密码是什么。如果您丢失了密钥库或忘记了密码,您将永远无法在 Google Play 上更新您的应用程序。


推荐阅读