как импортировать файл jks в visual studio 2019 в качестве существующего хранилища ключей

#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