Подтвердить что ты не робот

Невозможно загрузить обновленный APK в Google Play из-за другого сертификата

Я использую Android Studio для создания моих Android-проектов, и, когда я загружаю APK в Google Play, он продолжает показывать мне эту ошибку, несмотря на использование того же хранилища ключей, которое я использовал для более ранних версии моего приложения:

Ошибка загрузки

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

Ваши существующие APK подписаны с сертификатом (-ами) с отпечатками пальцев:
[SHA1: 89: 2F: 11: FE: CE: D6: CC: DF: 65: E7: 76: 3E: DD: A7: 96: 4F: 84: DD: BA: 33]
и сертификат (ы), используемый для подписания APK, который вы загрузили, имеет отпечатки пальцев:
[SHA1: 20: 26: F4: C1: DF: 0F: 2B: D9: 46: 03: FF: AB: 07: B1: 28: 7B: 9C: 75: 44: CC]

4b9b3361

Ответ 1

Во-первых, маловероятно, что Google Play здесь не так. Вы уверены, что не использовали свой ключ отладки по ошибке?

Проверьте используемые клавиши подписи

Вам следует дважды проверить, какие сертификаты содержат старый APK и новый APK, с помощью команд:

jarsigner -verify -verbose:summary -certs old.apk
jarsigner -verify -verbose:summary -certs new.apk

Здесь отображается информация о файлах, подписанных в каждом APK, например:

sm  4642892 Thu Apr 17 10:57:44 CEST 2014 classes.dex (and 412 more)

    X.509, CN=My App, O=My Company, C=DE, L=Köln
    [certificate is valid from 11/11/13 12:12 to 29/03/41 12:12]
    [CertPath not validated: Path does not chain with any of the trust anchors]

Если новый APK говорит X.509, CN=Android Debug, O=Android, C=US, вы подписали APK с вашим отладочным ключом вместо исходного ключа.

Если строки идентификации X.509 иначе отличаются или даты сертификатов отличаются между двумя APK, вы только что подтвердили, что вы использовали не тот же ключ подписи для обоих APK.

Вы можете игнорировать любое сообщение "CertPath not validated"; это не имеет значения в этом случае.

Поиск исходного хранилища ключей

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

Поиск по всем файлам хранилища ключей, которые вы можете найти, до тех пор, пока не будет найден правильный отпечаток SHA1:

keytool -list -keystore my-release.keystore

Я не могу найти исходное хранилище ключей

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

В Android это явно указано на странице Подписывание вашего приложения:

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

После первого выпуска APK все последующие релизы должны быть подписаны с помощью одного и того же ключа.

Можно ли извлечь исходный ключ подписи из исходного APK?

Нет. Это невозможно. APK содержит только общедоступную информацию, а не информацию личного ключа.

Могу ли я перейти на новый ключ подписи?

Нет. Даже если вы найдете оригинал, вы не можете подписывать APK с ключом A, а затем подписывать следующее обновление с помощью обоих ключей A и B, а затем подписывать следующее обновление только с помощью клавиши B.

Подписание APK (или любого файла JAR) с несколькими ключами технически возможно, но Google Play не принимает APK с несколькими сигнатурами.

Что я могу сделать?

Вам нужно будет создать приложение с новым идентификатором приложения (например, изменить с "com.example.myapp" на "com.example.myapp2" ) и создать новый список в Google Play.

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

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

Опять же, убедитесь, что у вас есть резервные копии хранилища ключей и пароля, которые вы используете для этой версии.