Используйте предоставленный upload_cert.der, чтобы подписать файл APK выпуска Android

Я только что зарегистрировался в программе подписи приложений Google Play, которая требовала загрузки зашифрованной версии хранилища ключей выпуска и имела «необязательный» шаг для создания хранилища ключей загрузки - необязательно в кавычках, потому что я думаю, что это должен быть обязательный шаг. , но в любом случае после успешной регистрации у меня остается Загрузить сертификат, который я должен каким-то образом использовать для подписи моих будущих выпусков приложений.

Что я сделал до сих пор: я создал новое хранилище ключей из Android Studio, установил пароли хранилища и псевдонима и попытался импортировать upload_cert.der в существующий псевдоним - не удалось:

keytool -importcert -file upload_cert.der -alias upload -keystore upload-keystore.jks

keytool error: java.lang.Exception: Public keys in reply and keystore don't match

Я также попытался импортировать сертификат загрузки без указания псевдонима (или удаления существующего псевдонима и создания нового) или с другим псевдонимом:

keytool -importcert -file upload_cert.der -keystore upload-keystore.jks

... тоже не удалось: в итоге был создан новый псевдоним мой ключ, который не был защищен паролем и завершился ошибкой с сообщением:

Caused by: java.lang.RuntimeException: com.android.ide.common.signing.KeytoolException: Failed to read key upload from store "/path/to/upload-keystore.jks": trusted certificate entries are not password-protected

... естественно, я попытался установить пароль для псевдонима:

keytool -keypasswd -alias upload -keystore upload-keystore.jks

что также не удалось с сообщением:

keytool error: java.lang.Exception: Alias has no key

... а теперь у меня кончились идеи.

Тем временем я отправил вопрос / запрос в службу поддержки Google Play, чтобы обновить мой ключ загрузки, но я надеюсь, что есть решение этой ситуации (служба поддержки довольно медленно отвечает), поскольку в документации нет t каким-либо образом подразумевают, что создание хранилища ключей загрузки и загрузка зашифрованного закрытого ключа этого хранилища ключей является обязательным. Итак, либо документация расплывчата / неясна / неверна, либо есть способ использовать сгенерированный файл upload_cert.der. Есть предположения?

Редактировать:

Благодаря ответу и комментарию, предоставленным Пьер, я понял, что если вы не создадите / не предоставите ключ загрузки, следует использовать существующий исходный ключ подписи с upload_cert.der. Итак, единственное требование - вставить сертификат загрузки, запустив:

keytool -importcert -file upload_cert.der -keystore original-signing-keystore.jks

... и вы сможете продолжить публикацию своих приложений в Play Store.

11
0
12 479
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Файл .der, который вы загрузили в Play Console (и который также доступен для загрузки на странице подписания приложений в Play Console), не содержит закрытого ключа, он содержит только открытый ключ, поэтому вы не сможете подписывайте что-нибудь с этим.

Только хранилище ключей, которое вы создали для создания сертификата загрузки, содержит закрытый ключ и должно использоваться для подписи ваших APK (или пакетов приложений).

Другими словами, вам не следует создавать другое хранилище ключей после регистрации в Play Signing, вы должны использовать созданное вами хранилище ключей для создания сертификата загрузки для подписи ваших будущих артефактов.

Надеюсь, это поможет.

Да, это помогает прояснить ситуацию, но, к сожалению, не решает мою проблему. Проблема в том, что я не создавал хранилище ключей загрузки перед регистрацией, потому что в то время это был «необязательный» шаг, и Google просто создал сам сертификат загрузки, который не связан с хранилищем ключей, которым я когда-либо владел. Надеюсь, это проясняет мой вопрос ... Я пытаюсь понять, почему это разрешено, если невозможно использовать автоматически сгенерированный upload_cert.der

Bojan Ilievski 30.06.2018 12:10

Если вы не предоставили сертификат загрузки в Google Play при энтоллинге, Play считает ваш ключ подписи ключом загрузки, и вам следует продолжать загружать APK / пакеты, подписанные тем же исходным ключом. Если вы хотите подписать загруженные артефакты другим ключом, вам необходимо сбросить его, обратившись в службу поддержки, как вы это сделали.

Pierre 30.06.2018 14:53

Если это так, отлично, если я все еще могу использовать свой старый ключ подписи, это вариант ... Спасибо, я попробую и приму ответ, если он сработает.

Bojan Ilievski 30.06.2018 14:57

Другие вопросы по теме

Пакет приложений для Android -> apk не включает требуемую собственную библиотеку
Ошибка "Ваша транзакция не может быть завершена" при тестировании покупки в Google Play
Зависание и невозможность входа после удаления данных игр Google Play
Android webview не может включить паузу без сбоя приложения (необходимо остановить воспроизведение YouTube в фоновом режиме)
Android - Тестирование покупок без физического телефона
Возможно ли, чтобы платное приложение было установлено из игрового магазина после переустановки из игрового магазина, но во второй раз не было оплачено денег?
Play Маркет показывает кнопку открытия вместо продолжения использования динамической ссылки
Откройте приложение Play Store по ссылке в браузере
Добавьте "метаданные безопасности" Google Play, не публикуя приложение
Приложение не установлено. Существующий пакет с тем же именем и конфликтующей подписью