如何在visual studio 2019中导入JKS文件作为现有的密钥库



我想在Google Play上更新一个应用程序。我丢失了Keystore密码,在联系google支持后,我遵循了下面给出的命令,他们为我重置了上传密钥。

1. keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks                 
2. keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks

现在我有了keystore.jks文件。现在问题来了

我在Visual Studio 2019中遵循这些步骤。

右键单击Myproject.Android > Archive然后获得apk文件Bundle Format: apk

点击Distribute > Google Play > Import

然后导入一个现有的Keystore对话框,它期望.keystore文件的扩展名导入,但我已经.jks试图将其转换为.keystore,但没有成功。

这是我得到的错误

at Xamarin.AndroidTools.PublicationUtilities.KeyManagement.<>c__DisplayClass13_0.<ImportKeyAsync>b__0(Task`1 t) in C:A134sExternalandroidtoolsXamarin.AndroidToolsPublicationUtilitiesKeyManagement.cs:line 313
at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Xamarin.VisualStudio.Publishing.Presentation.ViewModels.AndroidImportKeyViewModel.<Import>d__48.MoveNext() in C:A134ssrcCoreVisualStudio.PublishingPresentationViewModelsAndroidImportKeyViewModel.cs:line 133

我错过了什么吗?

我如何使用keystore.jks更新我的应用程序?

我想我应该发布一下我是如何解决这个问题的,如果其他人会面临这个问题,他可能会通过以下步骤来解决这个问题。

获取keystore.jks文件后,将project.Android.apkkeystore.jks文件复制到C:Program Files (x86)Androidandroid-sdkbuild-tools30.0.2位置。

在指定位置以管理员身份运行命令提示符C:Program Files (x86)Androidandroid-sdkbuild-tools30.0.2

现在您需要手动zipalignapk文件,运行以下命令:

run zipalign -v -p 4 com.project.Android.apk com.projectAligned.Android.apk

那么你必须签署apk

apksigner sign --ks keystore.jks --out com.projectRelease.Android.apk com.projectAligned.Android.apk

我在使用Visual Studio密钥存储库导入工具时遇到了同样的问题,结果发现导入工具需要别名和密钥存储库的非空密码。下面是复制密钥存储库的方法。JKS文件到新的上传。具有导入工具要求的别名密码的Keystore文件:

keytool -importkeystore -srckeystore keystore.jks -srcalias upload -destkeystore upload.keystore -deststoretype pkcs12 -destalias upload -destkeypass password

现在您可以使用Visual Studio导入新创建的upload.keystore,使用您在上面为-destkeypass指定的别名密码,并使用Visual Studio像往常一样签名,而不是从命令行签名。

我在一个应用程序中遇到了同样的问题,使用Visual Studio最简单的解决方案是:

  1. 用Visual Studio创建一个新的密钥库文件,之后您可以在以下位置找到它:
C:UsersUSERNAMEAppDataLocalXamarinMono for AndroidKeystorealiasalias.keystore
  1. 获得新密钥后,使用keytool从该文件生成证书:

    keytool -export -rfc -alias upload -file upload_certificate.证书。Pem -keystore alias.keystore

新的证书(.pem)将在同一个文件夹中,.keystore文件就像android Studio通常生成的。jks文件一样工作,但它在Visual Studio中更好。这样就不需要重新排列了。

如果你正在使用Visual Studio,而前面的选项都不起作用:

我面对同样的错误一个小时,我得到了这篇文章,事实证明,在我的情况下,Alias ​​Name是不正确的,并产生了这个错误。(我通过.keystore文件名找到并通过记事本打开它)所以也要确保别名是正确的

最新更新