如何将 visual studio 2019 中的 jks 文件导入为现有密钥库

how to import jks file in visual studio 2019 as existing keystore

我想在 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

然后 Import an Existing Keystore dialog box 它期望导入扩展名为 .keystore 的文件,但我 .jks 也尝试将其转换为 .keystore 但没有成功。

这是我遇到的错误

   at Xamarin.AndroidTools.PublicationUtilities.KeyManagement.<>c__DisplayClass13_0.<ImportKeyAsync>b__0(Task`1 t) in C:\A\s\External\androidtools\Xamarin.AndroidTools\PublicationUtilities\KeyManagement.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:\A\s\src\Core\VisualStudio.Publishing\Presentation\ViewModels\AndroidImportKeyViewModel.cs:line 133

有什么我遗漏的吗?

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

我想我应该 post 我是如何解决这个问题的,如果其他人会遇到这个问题,他可能会按照这些步骤解决它。

获得 keystore.jks 文件后,将 project.Android.apkkeystore.jks 文件复制到 C:\Program Files (x86)\Android\android-sdk\build-tools.0.2 位置。

运行 在给定位置以管理员身份命令提示符 C:\Program Files (x86)\Android\android-sdk\build-tools.0.2

现在你需要zipalign手动apk文件,运行以下命令。

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 密钥库导入工具相同的问题,事实证明导入工具需要别名和密钥库的 non-empty 密码。以下是使用导入工具所需的别名密码将 keystore.jks 文件复制到新的 upload.keystore 文件的方法:

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

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