При обновлении приложения на плей маркете (play.google.com) оно должно быть подписан тем же сертификатом, что и раньше. Обычно это файл .jks или .keystore, в котором хранятся данные об издателе. Сертификат подтверждает что вы владелец приложения.
Но что делать если потеряли сертификат? Или забыли пароль к сертификату или алиас? Решение дальше.
Что делать если забыл пароль к сертификату android приложения
Универсальное решение — писать в поддержку гугл через свой аккаунт разработчика. Это проверенный вариант, всегда мне помогал. Другого рабочего варианта я не знаю. Минус — занимает время. Иногда это пару недель. Но если подготовится и все сделать правильно, то можно уложиться в 3-4 дня.
Все что описано ниже — рабочий вариант. Переписка должна вестить на английском языке. Во всех 100% случаев за последние два года поддержка отвечала именно так. Последний случай до написания статьи был в средине октября 2020 года.
Подписать новым сертификатом и ответить гуглу
- Пишите в поддержку гугла. Распишите подробно что случилось: поменял систему, потерял файл, удалил файл,забыл пароль, пропал программист.
- Они пришлют ссылку как сгенерировать новый ключ.
- Сгенерируйте ключ и извлеките файл pem.
Как сгенерировать новый ключ для обновления приложения в play market
Нам понадобится утилита keytool. Она идет при установке Java (jdk). У меня размещена по пути C:\Program Files\Java\jdk1.8.0_102\bin .
По условиям гугл ключ должен быть 2048-битным ключом RSA и иметь срок действия 25 лет. Через командную строку пишем (вариант через Android studio описан ниже):
1 | keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks |
Дальше следуем инструкциям. При вводе пароля символы могут не отображаться! (кто не знает).
P.S. Файл создается в той папке, где Вы находитесь. Эта инструкция подразумевает что Вы знакомы хотя бы с командной строкой и можете разобраться в синтаксисе. Если не можете справиться сами, попросите своего программиста или обратитесь ко мне (за вознаграждение).
После создания ключа нужно «извлечь» файл .pem:
1 | keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks |
Дальше этот файл и нужно сбросить в ответ на письмо от гугла. Обычно работники гугл присылают инструкцию и пишут что-то вроде «Ответьте на это письмо и прикрепите файл upload_certificate.pem .» Отправляем файл и ждем.
После этого они напишут что можете загружать новую версию приложения.
ВНИМАНИЕ! Не грузите обновление до подтверждения от гугл. Оно не пройдет.
Создать сертификат через Android Studio
Новичкам часто удобно создавать сертификат и alias прямо в android studio. Вы можете создать новый ключ там, но извлечь pem нужно будет через keytool.
В Android Studio и инструкции от гугла есть пункт «экспортировать ключ для подписи приложения в google play» (.pepk файл). Но пока у меня запрашивали только .pem файл.
Что делать если забыл пароль к alias
В файле ключа keystore/jks может хранится много alias. Если у Вас есть пароль к сертификату, но забыли пароль к alias — попробуйте создать новый alias.
Почему нельзя просто обновить приложение android
Потому что. Постараюсь обьяснить если Вам не все равно.
Приложение имеет свое уникальное имя пакета. В плей маркете привязка идет конкретно к этому «имени пакета». Сделать новое приложение с таким же именем не проблема. Но загрузить с этого или другого аккаунта в маркет уже нельзя будет!
Обновить можно, только если подписать тем же сертификатом (ключом). Так нужно для защиты. Это подтверждает что Вы владелец этого приложения и владелец нового обновления, и подтверждаете что там нет вредоносного кода.
Что делать если есть файл приложения арк, исходники проекта, но нет ключа (сертификата). Можно обновить в маркете?
Без пароля и без самого ключа — нельзя. Только писать в поддержку.
Как не зависеть от разработчика в разрезе подписи android приложения
У меня много раз заказывали обновление приложения. Чтобы успешно это сделать есть два варианта: наличие ключа и пароля к нему (и к alias, они могут отличаться!). Или второй — писать в поддержку.
Имя пакета я могу увидеть в маркете, но без ключа и паролей обновление не получиться!
Пару советов заказчикам:
- Просите у программиста ключ, которым он подписал приложение и пароль к нему.
- Если пароль к alias отличается — его тоже.
Также есть вариант когда заказчик сбрасывает Вам unsigned apk (неподписанное приложение). В этом случае можно самому подписать через keytool и другие утилиты. Или использовать вариант подписывания приложения Google (они сами подпишут своим сертификатом).
Отмечу, второй вариант мне не попадался (с unsigned apk). Хотя всегда при загрузке app bundle (apk я почти не гружу) я включаю опцию подписывания приложения сертификатом от гугл.
Постскриптум
Описал немного лишнего, для понимания. Запомните просто, для решения этой проблемы нужно писать в поддержку и никак по-другому.
спасибо