我想在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.apk
和keystore.jks
文件复制到C:Program Files (x86)Androidandroid-sdkbuild-tools30.0.2
位置。
在指定位置以管理员身份运行命令提示符C:Program Files (x86)Androidandroid-sdkbuild-tools30.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密钥存储库导入工具时遇到了同样的问题,结果发现导入工具需要别名和密钥存储库的非空密码。下面是复制密钥存储库的方法。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最简单的解决方案是:
- 用Visual Studio创建一个新的密钥库文件,之后您可以在以下位置找到它:
C:UsersUSERNAMEAppDataLocalXamarinMono for AndroidKeystorealiasalias.keystore
获得新密钥后,使用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
文件名找到并通过记事本打开它)所以也要确保别名是正确的