Я загрузил свое приложение в Google Play (тогда оно называлось Android Market) некоторое время назад.
Сегодня я обновил приложение, но я удалил предыдущее хранилище ключей и создал новое.
При загрузке говорится, что APK должен быть подписан теми же сертификатами, что и предыдущая версия:
Загрузка не удалась
Вы загрузили 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]
Но у меня нет этого сертификата, и я не хочу удалять и повторно публиковать приложение, потому что у него есть активные пользователи.
Что я могу сделать, чтобы подписать мое приложение новым сертификатом?
источник
Ответы:
Ничего. Прочитайте документацию: Публикация обновлений в Android Market
источник
Вы подписали ключом отладки по ошибке?
Google Play не позволяет вам публиковать приложение, подписанное вашим хранилищем ключей отладки. Если вы попытаетесь загрузить такой APK, Google Play потерпит неудачу с сообщением «Вы загрузили APK, который был подписан в режиме отладки. Вам необходимо подписать свой APK в режиме выпуска».
Однако, если вы попытаетесь загрузить обновление, подписанное хранилищем ключей отладки, вы не увидите это сообщение; В Google Play отобразится сообщение, отображаемое в вопросе со ссылкой на отпечатки пальцев SHA1.
Итак, во-первых, проверьте, не подписали ли вы приложение отладочным ключом по ошибке.
Как проверить, какие ключи подписи были использованы?
Соберите информацию из APK
Вы можете проверить, с какими сертификатами были подписаны исходный APK и обновить APK, с помощью этих команд, используя Java
keytool
:Здесь показана подробная информация о том, как был подписан APK, например:
Важные части, которые следует отметить здесь - для каждого APK - это значение отпечатка пальца SHA1, значение идентификатора владельца и действительный с / до даты.
Если эта
keytool
команда не работает (-jarfile
опция требует Java 7), вы можете получить более основную информацию с помощьюjarsigner
команды:К сожалению, это не показывает отпечаток SHA1, но показывает личность владельца X.509, а также даты истечения срока действия сертификата. Например:
Вы можете игнорировать любое сообщение «CertPath not validated» вместе с предупреждениями о цепочках сертификатов или временных отметках; они не актуальны в этом случае.
Сравните значения Owner, SHA1 и Expiry между APK
Если значение идентификатора владельца / X.509 равно
CN=Android Debug, O=Android, C=US
, то вы подписали APK с помощью ключа отладки , а не исходного ключа выпускаЕсли значение отпечатка SHA1 отличается между исходным и обновленным APK, то вы не использовали один и тот же ключ подписи для обоих APK
Если значения идентификатора владельца / X.509 отличаются или даты истечения срока действия сертификата отличаются для двух APK, значит, вы не использовали один и тот же ключ подписи для обоих APK
Обратите внимание, что даже если значения Owner / X.509 идентичны между двумя сертификатами, это не означает, что сертификаты идентичны - если что-то еще не совпадает - например, значения отпечатков пальцев - тогда сертификаты различны.
Поиск оригинального хранилища ключей, проверка резервных копий
Если два APK имеют различную информацию о сертификате, то вы должны найти исходное хранилище ключей, то есть файл с первым значением отпечатка пальца SHA1, которое Google Play (или
keytool
) сообщил вам.Выполните поиск по всем файлам хранилища ключей, которые вы можете найти на вашем компьютере, и в любых ваших резервных копиях, пока у вас не появится файл с правильным отпечатком SHA1:
Просто нажмите, Enterесли будет предложено ввести пароль - вам не обязательно вводить его, если вы просто хотите быстро проверить значение SHA1.
Я не могу найти оригинальное хранилище ключей нигде
Если вы не можете найти исходное хранилище ключей, вы никогда не сможете публиковать обновления для этого конкретного приложения.
Android явно упоминает об этом на странице « Подписание приложения» :
После первого выпуска APK все последующие выпуски должны быть подписаны одним и тем же ключом.
Могу ли я извлечь оригинальный ключ подписи из оригинального APK?
Нет, это невозможно. APK содержит только общедоступную информацию, а не информацию о вашем личном ключе.
Могу ли я перейти на новый ключ подписи?
Нет. Даже если вы найдете оригинал, вы не можете подписать APK с ключом A, затем подписать следующее обновление ключами A и B, а затем подписать следующее обновление только ключом B.
Технически возможно подписание APK (или любого файла JAR) несколькими ключами , но Google Play больше не принимает APK с несколькими подписями.
Попытка сделать это приведет к появлению сообщения «Ваш APK был подписан несколькими сертификатами. Пожалуйста, подпишите его только одним сертификатом и загрузите его снова».
Что я могу сделать?
Вам нужно будет создать приложение с новым идентификатором приложения (например, изменить «com.example.myapp» на «com.example.myapp2») и создать новый список в Google Play.
Возможно, вам также придется изменить свой код, чтобы люди могли установить новое приложение, даже если у них установлено старое приложение, например, вам нужно убедиться, что у вас нет конфликтующих поставщиков контента.
Вы потеряете существующую базу установки, обзоры и т. Д., И вам придется найти способ заставить своих существующих пользователей удалить старое приложение и установить новую версию.
Опять же, убедитесь, что у вас есть безопасные резервные копии хранилища ключей и паролей, которые вы используете для этой версии.
источник
[CertPath not validated: Path does not chain with any of the trust anchors]
, не проблема, eather? Я вижу свое имя на,CN
так что я думаю, что я правильно подписал его :)Ничего - Google четко говорит, что приложение идентифицируется ключами, используемыми для его подписи. Следовательно, если вы потеряли ключи, вам нужно создать новое приложение.
источник
Сегодня я столкнулся с той же проблемой, к сожалению, у меня было два псевдонима в моем файле хранилища ключей.
источник
Я только что это произошло из чистого синего. Я действительно не думаю, что я что-то изменил.
Однако
Build => Clean Project
исправили это.источник
Здесь я получаю ответ на этот вопрос. После поиска слишком долго, наконец, я могу взломать ключ и пароль для этого. Я забыл свой ключ и псевдоним, а также файл jks, но, к счастью, я знаю, какой пароль я ввел в него. но найти правильные комбинации для этого было трудной задачей для меня.
Решение - Загрузите это - Плагин Keytool IUI версии 2.4.1
появится всплывающее окно, теперь оно показывает псевдоним ... если файл JKS правильный ... щелкните правой кнопкой мыши по псевдониму и нажмите "просмотреть цепочку сертификатов" .. он покажет ключ SHA1 .. сопоставьте этот ключ с ключом, который вы получите пока вы загружали apk в магазине приложений Google ...
если это соответствует, то вы с правильным файлом JKS и псевдонимом ..
теперь повезло, у меня есть куча паролей, чтобы соответствовать ..
Теперь перейдите к этому scrren поставить тот же путь JKS .. и пароль (среди паролей, которые у вас есть) положить любой путь в "Файл сертификата"
если на экране отображается какая-либо ошибка, значит, пароль не совпадает. если не отображается ошибка, значит, у вас правильный файл JKS. Исправьте псевдоним и пароль (), теперь вы можете загрузить свой apk в игровой магазин :)
источник
Если у вас есть предыдущий apk-файл с вами (резервная копия), то используйте jarSigner для извлечения сертификата из того самого apk, затем используйте этот ключ или используйте keytool для клонирования этого сертификата, может быть, это поможет ... Полезные ссылки - документы jarsigner и документы keytool ,
источник
Я настоятельно рекомендую Keystore Explorer ( https://keystore-explorer.org/ ), который позволяет вам получить доступ к вашему хранилищу ключей без необходимости загружать его в Google Play. Таким образом, вы можете определить, правильно ли вы вводите пароль.
источник
Вы можете использовать новую функцию подписи приложения Google Play для создания нового ключевого файла.
После мая 2017 года Google Play Store добавит новую функцию в Play store и это хорошая новость для разработчиков Android. С помощью этой функции разработчик может обновить свое приложение или Apk, которые потеряли файл KeyStore. Вам необходимо включить подпись приложения Google Play на консоли Play Store.
https://support.google.com/googleplay/android-developer/answer/7384423?hl=en
http://www.geekcodehub.com/2018/05/23/keystore-lost-in-android/
источник
Я сталкивался с этой проблемой недавно, после попытки разных способов входа в систему, таких как включение V1 или V2, вход в систему путем изменения псевдонима и в последний раз узнал, что я использую неправильный файл хранилища ключей
источник
Моя [глупая] ошибка заключалась в том, что я использовал файл app-debug.apk вместо файла app-release.apk. Вам нужно выбрать «release» во фрейме «Build Variants» при создании подписанного APK. Файл app-release.apk должен находиться в папке «app \ release» в корне вашего проекта.
источник