#android #visual-studio #xamarin #xamarin.android #keystore
Вопрос:
Я хочу обновить приложение в Google Play. Я потерял пароль хранилища ключей, после обращения в службу поддержки 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
файла для импорта, но я .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
для обновления своего приложения?
Комментарии:
1. AFAIK jks и хранилище ключей-это одно и то же, и вы должны иметь возможность просто переименовать его. «пытался преобразовать его в .хранилище ключей, но не преуспел». — что именно вы сделали, чтобы преобразовать его?
2. @Jason Я нашел статью, в которой они рекомендуют эту команду keytool-importkeystore-srckeystore c:temp2h2vkeystore.jks -destkeystore c:temp2h2vkeystore.keystore -тип deststoretype pkcs12 изначально это был keytool-importkeystore-srckeystore c:temp2h2vkeystore.jks -destkeystore c:temp2h2vkeystore.jks -deststoretype pkcs12
3. вы пробовали просто переименовать файл?
4. @Jason переименовал расширение в .keystore и использовал тот же пароль и псевдоним. и я получаю ту же самую вышеупомянутую ошибку в вопросе.
5. @JessieZhang-MSFT На самом деле я решил проблему. Я пропустил один шаг zipalign шаг
Ответ №1:
Я подумал, что должен опубликовать, как я решил эту проблему, если кто-то еще столкнется с этой проблемой, он может решить ее, выполнив следующие действия.
После получения 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