【发布时间】:2019-06-26 22:07:22
【问题描述】:
我正在尝试在 Google Play 上发布我的第一个应用,但遇到了困难。
让我向您解释我的问题:
我的应用程序编译,我想生成一个签名的 apk...
这不适用于 android studio (Build--> generate signed budle/apk),我收到了下一条错误消息:
erreur keytool : java.io.FileNotFoundException: C:\Users\sebla\Desktop\AndroidApp\jdk-11.0.1\bin\mykeystore.jks (Accès refusé)
然后,我成功创建了密钥库(通过 cmd):C:\Users\sebla\Desktop\AndroidApp\jdk-11.0.1\bin>keytool -genkey -v -keystore appkeystore.keystore -alias permisKey -keyalg RSA -keysize 2048 -validity 10000
但现在我在生成签名的 apk 时收到以下错误消息:
Something went wrong with the encryption tool: Get Key failed: Given final block not properly padded
java.security.UnrecoverableKeyException: Get Key failed: Given final block not properly padded
at sun.security.pkcs12.PKCS12KeyStore.engineGetKey(PKCS12KeyStore.java:410)
at sun.security.provider.KeyStoreDelegator.engineGetKey(KeyStoreDelegator.java:96)
at sun.security.provider.JavaKeyStore$DualFormatJKS.engineGetKey(JavaKeyStore.java:70)
at java.security.KeyStore.getKey(KeyStore.java:1023)
at com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.extractPrivateKey(KeystoreHelper.java:56)
at com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.getPrivateKey(KeystoreHelper.java:35)
at com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.run(ExportEncryptedPrivateKeyTool.java:98)
at org.jetbrains.android.exportSignedPackage.ExportSignedPackageWizard$2.run(ExportSignedPackageWizard.java:241)
at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:750)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:157)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:580)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:525)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:85)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:144)
at com.intellij.openapi.progress.impl.CoreProgressManager$4.run(CoreProgressManager.java:395)
at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:305)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:989)
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:845)
at com.sun.crypto.provider.PKCS12PBECipherCore.implDoFinal(PKCS12PBECipherCore.java:399)
at com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndDESede.engineDoFinal(PKCS12PBECipherCore.java:431)
at javax.crypto.Cipher.doFinal(Cipher.java:2165)
at sun.security.pkcs12.PKCS12KeyStore.engineGetKey(PKCS12KeyStore.java:348)
... 20 more
------------------------------------
非常感谢一些帮助,因为我完全迷失了并且无法发布我的应用程序感到沮丧。 我是否有任何代码可以在 manifest 或 gradle 中实现以消除该错误?
【问题讨论】:
-
感谢您的帮助,但这不是重复的,因为我没有编写任何与加密相关的代码。我只是想从 Android Studio 生成一个签名的 apk
-
您可以从 Android Studio 创建新的密钥库。 stackoverflow.com/a/29621643/6168272。使用此密钥库并将应用发布到 Play 商店后,请将其保存在安全的地方。
-
Ranjan,我尝试过这种方式,但出现以下错误:erreur keytool : java.io.FileNotFoundException: C:\Users\sebla\Desktop\AndroidApp\jdk-11.0.1\bin\appkeystore .keystore(访问被拒绝)
-
一些事情。 (a) 看起来您正在使用非常奇怪的地方来放置您的
keystore.properties和mykeystore.jks文件。 (b) 您的编译器似乎还需要一个PKCS12-type 密钥库,而 Android Studio 通常使用另一个默认值。 (我知道新的 gradle 对此抱怨,告诉你转换为 pkcs12,但是当我这样做时,我也遇到了奇怪的错误。(c)尝试关注我的 instructions here。