Используйте предоставленный upload_cert.der, чтобы подписать релиз APK-файл Android - PullRequest
0 голосов
/ 29 июня 2018

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

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

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

ошибка keytool: java.lang.Exception: открытые ключи в ответе и хранилище ключей не совпадают

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

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

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

Причина: java.lang.RuntimeException: com.android.ide.common.signing.KeytoolException: не удалось прочитать загрузку ключа из хранилища "/path/to/upload-keystore.jks": записи доверенного сертификата не являются паролем -защищенный

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

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

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

ошибка keytool: java.lang.Exception: у псевдонима нет ключа

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

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

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

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

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

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

1 Ответ

0 голосов
/ 30 июня 2018

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

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

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

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

...