Apk файл не содержит сертификатов
Я хочу загрузить свой первый APK / приложение на Android Market, но я получил эту ошибку (которая не привела меня к правильной ссылке при поиске в stackoverflow, кстати).
Market не принимает apks, подписанные сертификатом отладки. Создайте новый сертификат, действительный не менее 50 лет. Рынок требует, чтобы сертификат, используемый для подписания apk, был действителен по крайней мере до 22 октября 2033 года. Создайте новый сертификат.
хотя получается вон!--7-->этот вопрос похоже, парень просто говорит: "О, вы напомнили мне, как это сделать", фактически не объясняя. Я посмотрел на сайт, упомянутый в "ответе", но вот моя проблема:
- Я не знаю, где мой инструмент keytool. The Android сайт довольно расплывчато; я не вижу "keytool" любого рода в моем ..android-sdk-каталог windowstools.
- Я думаю, что я делал это раньше, но я хотел бы, чтобы у меня был набор шагов, который например, "откройте командную строку, перейдите в каталог, где находится keytool, введите команду "xyz-flagsforxyz", а затем укажите хранилище ключей из опции "export release apk "в Eclipse". или что-то подобное.
надеюсь, вы можете сказать,что я уже пробовал несколько вещей! Я мог бы просто пропустить что-то простое-так что пришло время для шагов, которые будут записаны в stackoverflow! Спасибо за помощь.
Если вы используете Eclipse для разработки просто щелкните правой кнопкой мыши на проект и выберите команду экспорт. Теперь выберите Android, а затем экспортировать приложение Android. На следующем шаге подтвердите проект, который вы хотите экспортировать. Затем нажмите кнопку Далее, и теперь вы сможете выбрать создать новое хранилище ключей. Теперь заполните необходимые поля, и вы сможете подписать свое приложение. Обязательно сделайте резервную копию файла хранилища ключей и запомните пароль. Потеря этого сделает невозможным обновление вашего приложение.
Если вы используете терминал для создания хранилища ключей и у вас установлен Java SDK, должна быть программа keytool в /usr/bin (в системе на базе unix). В Windows SDK также должен поставляться с keytool, но место установки может отличаться поиском keytool.exe на вашем компьютере, если keytool уже не находится на вашем пути. С помощью этого инструмента вы сможете создать ключ следующим образом:
помните, что как только вы проиграете Ваш сертификат или он истекает, вы не сможете подписать свое заявление. Убедитесь, что срок годности-это очень долгое время в будущем.
да, Януш объяснил это очень хорошо, но я хотел бы рассказать еще несколько шагов, прежде чем обедать приложение на рынок. Итак, первый шаг-подписать приложение с помощью jarsigner
и второй шаг-использовать zipalign, чтобы убедиться, что вы не теряете пространство.
SAI (Split APKs Installer)
Версия: 4.5
Последнее обновление программы в шапке: 25.02.2021
Краткое описание:
Установка приложений состоящих из нескольких APK.
SAI (Split APKs Installer) - установщик приложений, состоящих из нескольких APK. Его можно применять для установки приложений, распространяемых как App Bundle.
Требуется Android: 5.0+
Русский интерфейс: Да, частично
Очень нужная вещь в современном мире. Сплиты умеет качать, например, Yalp.
Тема оформлена так, будто root не нужен. По идее, он нужен.
Скриншотов бы побольше. Непонятно, как выбирать все части сплита.
gar_alex,
Очень интересно. Без рут всё ставится.
В проводнике выбрать базовый apk и доп. Будет установка стандартным установщиком пакетов.
Проверено на 7.1.2 и 8.0.0.
по гугловой документации, сплиты поддерживаются с 5.0+, но по факту я имею аппарат с 4.4, куда маркет тоже отправляет сплиты, это honor 4C. Поэтому просьба понизить api level приложения.
Новая версия 1.1
Changelog:
Fix..fix.fix.
sai.apk ( 1.82 МБ )
Некоторое время назад я загрузил свое приложение в Google Play (когда он был назван Android Market).
Сегодня я обновил приложение, но я удалил предыдущее хранилище ключей и создал новый.
При загрузке говорится, что APK должен быть подписан с теми же сертификатами, что и предыдущая версия:
Но у меня нет этого сертификата и вы не хотите удалять и повторно публиковать приложение, потому что у него есть активные пользователи.
Что я могу сделать, чтобы подписать мое приложение с новым сертификатом?
Ничего. Прочтите документацию: публикация обновлений на Android Маркете
Перед загрузкой обновленного приложения убедитесь, что вы увеличили атрибуты android: versionCode и android: versionName в элементе файла манифеста. Кроме того, имя пакета должно быть одинаковым, а .apk должен быть подписан с тем же закрытым ключом. Если имя пакета и сертификат подписи не соответствуют требованиям существующей версии, Market рассмотрит это новое приложение и не будет предлагать его пользователям в качестве обновления.
могу ли я извлечь оригинальный ключ подписи из оригинального APK?
нет. Это невозможно. APK содержит только общедоступную информацию, а не информацию о вашем частном ключе.
Могу ли я извлечь исходный ключ подписи из оригинального APK?
Нет, это невозможно. APK содержит только общедоступную информацию, а не информацию личного ключа.
Собираем информацию из АПК
Вы можете проверить, какие сертификаты оригинальные APK и обновление АПК были подписаны с помощью этих команд, используя keytool на Java``:
Это показывает вам подробную информацию о том, как был подписан, например, АПК: в
Важные части, чтобы отметить здесь — для каждого АПК — являются в формате SHA1 значение отпечатков пальцев, владелец ценность личности, и действует от/до даты.
Если что ключей команда не'т работу, (в -файла jarfile вариант требует Java 7), Вы можете получить больше базовой информации по ТО jarsigner команду:
Это, к сожалению, не показывают отпечаток SHA1, но Х. 509 владелец идентичности, наряду с даты истечения срока действия сертификата. Например:
сравните владельца, SHA1 и значения истечения срока действия между APKs
если владелец/Х. 509 значение идентификатора CN=Android Debug, O=Android, C=US , то вы подписали APK с вашим ключ debug, не оригинальный ключ релиз
если в SHA1 значение отпечатка пальца отличается от исходного и обновления APKs, то вы сделали не используйте один и тот же ключ подписи для обоих APKs
если владелец/Х. 509 значения идентификаторов различны, или даты истечения срока действия сертификата отличаются между двумя APKs, тогда вы сделали не используйте один и тот же ключ подписи для обоих APKs
обратите внимание, что даже если значения Owner/X. 509 идентичны между двумя сертификатами, это не означает, что сертификаты идентичны - если что - то еще не соответствует - например, значения отпечатков пальцев-тогда сертификаты разные.
Если собственником/Х. 509 идентичность ценности разные, или сертификат сроки годности отличаются между двумя приложениями, то ты **** не использовать тот же ключ подписи для APK-файлы Обратите внимание, что даже если владелец/Х. 509 значения совпадают между двумя сертификатами, это не'т имею в виду, что сертификаты являются идентичными — если что-то не соответствует — например значения отпечатков пальцев — значит сертификаты разные.
Я могу перенести в новый ключ подписи?
Соберите информацию из APK
Вы можете проверить, с какими сертификатами был подписан оригинальный APK и APK обновления, с помощью этих команд, используя Java keytool :
Это показывает подробную информацию о том, как APK был подписан, например:
Важные части, которые следует отметить здесь – для каждого APK – это значение отпечатка SHA1, значение идентификатора владельца и даты « Действительный от / до дат».
Если эта команда -jarfile не работает (для параметра -jarfile требуется Java 7), вы можете получить более основную информацию с помощью команды jarsigner :
Это, к сожалению, не показывает отпечаток SHA1, но показывает идентификатор владельца X.509 вместе с датами истечения срока действия сертификата. Например:
можно ли перейти на новый ключ подписи?
нет. Даже если вы найдете оригинал, вы не можете подписать APK с ключом, то знак следующего обновления с ключами A и B, то знак следующего обновления После что с ключ только Б.
подписание APK (или любого файла JAR) с несколькими ключами-это технически возможно, но Google Play больше не принимает APKs с несколькими подписями.
Я могу'т найти оригинальное хранилище в любом месте
Если вы не можете найти оригинальный хранилища, вы не уметь публиковать какие-либо обновления для данного конкретного приложения. Андроид упоминает об этом явным образом на [подпись приложения][1] страница:
Поиск исходного хранилища ключей, проверка резервных копий
Если у двух APK есть разные данные сертификата, вы должны найти оригинальное хранилище ключей, то есть файл с первым значением отпечатка SHA1, которое вам сказал Google Play (или keytool ).
Поиск по всем файлам хранилища ключей, которые вы можете найти на своем компьютере, и в любых резервных копиях, которые у вас есть, до тех пор, пока вы не получите тот, у кого есть правильный отпечаток SHA1:
Просто нажмите Enter, если будет предложено ввести пароль – вам необязательно вводить его, если вы просто хотите быстро проверить значение SHA1.
Нет. Это не возможно. В АПК содержится только общедоступная информация, а не ваш собственный ключ информации.
Вы по ошибке подписали ключ отладки?
Итак, во-первых, проверьте, по ошибке ли вы подписали приложение с вашим отладочным ключом.
Я могу извлечь оригинальный ключ подписи из оригинального АПК?
Вы подписали с ключом отладки по ошибке?
Ищите оригинальный хранилища, проверки резервных копий
Если два файла имеют различные сведения о сертификате, то вы должны найти оригинальные хранилище, т. е. файл с первым и SHA1 значение отпечатков пальцев, что Google Play (или ключей ) сказал. Поиск через все хранилище файлов вы можете найти на вашем компьютере, и в любой резервные копии у вас есть, пока у вас есть один правильный отпечаток SHA1:
что я могу сделать?
вам придется создать приложение с новым идентификатором приложения (например, изменить с " com.образец.myapp "to" com.образец.myapp2") и создать новый список в Google Play.
возможно, Вам также придется изменить свой код, чтобы люди могли установить новое приложение, даже если у них установлено старое приложение, например, вам нужно убедиться, что у вас нет конфликтующих поставщиков контента.
вы потеряете существующую базу установки, отзывы и т. д., и придется найти способ заставить ваших существующих клиентов удалить старое приложение и установите новую версию.
еще раз убедитесь, что у вас есть безопасные резервные копии хранилища ключей и паролей, которые вы используете для этой версии.
ничего - Google ясно говорит, что приложение идентифицируется по ключам, используемым для его подписания. Следовательно, если вы потеряли ключи, вам нужно создать новое приложение.
сегодня я столкнулся с той же проблемой, к сожалению, у меня было два псевдонима в моем файле хранилища ключей.
здесь я получу ответ на этот вопрос . После поиска слишком долго, наконец, я могу взломать ключ и пароль для этого . Я забыл свой ключ и псевдоним также файл jks, но, к счастью, я знаю кучу пароля, который я положил в него . но найти правильные комбинации для этого было самой трудной задачей для меня .
появится окно, теперь оно покажет псевдоним ..Если вы файл jks правильный .. щелкните правой кнопкой мыши на псевдониме и нажмите "Просмотр цепочки сертификатов ".. он покажет ключ SHA1 .. сопоставьте этот ключ с ключом tha, который вы получаете во время загрузки apk в google app store .
если он соответствует, то вы с правильным файлом jks и псевдонимом ..
теперь и у меня есть куча паролей к матчу ..
Теперь перейдите к этому scrren, поставьте тот же путь jks .. и пароль (среди пароля, который у вас есть ) поместите любой путь "Файл сертификата"
Если у вас есть предыдущий файл apk с вами(резервное копирование), то используйте jarSigner для извлечения сертификата из этого apk, а затем используйте этот ключ или используйте keytool для клонирования этого сертификата, возможно, это поможет. Полезные ссылки jarsigner docs и keytool docs.
недавно я столкнулся с этой проблемой, попробовав разные способы входа, такие как enable V1 или V2, вошел, изменив имя псевдонима и последнее, что я знаю, что я использую неправильный файл хранилища ключей
предупреждение: держать ваши ключей, и приватный ключ в надежном и безопасном месте, и убедитесь, что у вас есть безопасное резервное копирование из них. Если вы публикуете приложение в Google Play и затем потерять ключ, с которым вы подписали ваше приложение, вы не сможете публиковать какие-либо обновления для вашего приложения, так как вы всегда должны подписать все версии вашего приложения с тем же ключом. После первого выхода из игры, все последующие релизы должны быть подписаны с точно такой же ключ.
Сравниваем владельца, SHA1 и окончания значения между Апкс
- Если собственником/Х. 509 тож стоимости составляет СП=отладки Android, о=Андроид, с=нас , потом вы подписали АПК с отладка в, не оригинал ключа
- Если в формате SHA1 значение отпечатков пальцев отличается от оригинальной и APK-файлы обновления, то вы сделали не использовать тот же ключ подписи для APK-файлы
Как проверить, какие ключи подписи были использованы?
Я не могу найти исходное хранилище ключей где угодно
Если вы не можете найти оригинальное хранилище ключей, вы никогда не сможете публиковать обновления для этого конкретного приложения.
Android упоминает это явно на странице « Подписание вашего приложения» :
Предупреждение. Храните хранилище ключей и секретный ключ в безопасном и безопасном месте и убедитесь, что у вас есть надежное резервное копирование. Если вы опубликуете приложение в Google Play, а затем потеряете ключ, с которым вы подписали приложение, вы не сможете публиковать какие-либо обновления для своего приложения, так как вы должны всегда подписывать все версии вашего приложения с тем же ключом.
После первого выпуска APK все последующие релизы должны быть подписаны с помощью одного и того же ключа.
Поиск оригинальное хранилище ключей, проверьте резервные копии
если два APKs имеют различную информацию сертификата, то вы должны найдите исходное хранилище ключей, т. е. файл с первым значением отпечатка SHA1, которое Google Play (или keytool ) сказали Вы.
поиск по всем файлам хранилища ключей вы можете найти на вашем компьютере, и в любых резервных копий у вас есть, пока у вас есть один с правильным отпечатком SHA1:
просто пресс Enter при запросе пароля - вам не обязательно вводить его, если вы просто хотите быстро проверить значение SHA1.
Могу ли я перейти на новый ключ подписи?
Нет. Даже если вы найдете оригинал, вы не можете подписывать APK с ключом A, а затем подписывать следующее обновление с помощью обоих ключей A и B, а затем подписывать следующее обновление после этого только с помощью клавиши B.
Подписание APK (или любого файла JAR) с несколькими ключами технически возможно, но Google Play больше не принимает APK с несколькими сигнатурами.
Как я могу проверить, какие используются ключи подписи?
вы подписали с ключом отладки по ошибке?
Итак, во-первых, проверьте, подписали ли вы приложение с ключом отладки по ошибке.
Я не могу найти оригинальное хранилище в любом месте
если вы не можете найти оригинальное хранилище ключей, вы будете никогда иметь возможность публиковать любые обновления для этого конкретного приложения.
Android упоминает об этом явно на Подписание Заявления страницы:
предупреждение: храните хранилище ключей и закрытый ключ в надежном и безопасном месте и убедитесь, что у вас есть безопасные резервные копии. если вы опубликуете приложение в Google Play, а затем потеряете ключ, с которым вы подписали приложение, вы не сможете публиковать какие-либо обновления для вашего приложения, так как вы всегда должны подписывать все версии вашего приложения с тем же ключом.
после первого выпуска APK все последующие выпуски должны быть подписаны с точно таким же ключом.
Просто нажмите введитероз> если вам предложат ввести пароль — вы не'т должен будет ввести его, если вы просто хотите быстро проверить значение SHA1.
Как проверить, какие ключи подписки были использованы?
Что я могу сделать?
Вы должны построить ваше приложение с новым идентификатором приложения (например, изменение от "ком.пример.приложение" до "У ком.пример.myapp2 и") и создайте новый список на Гугл Плей. Возможно, вы также будете иметь, чтобы изменить свой код так, что люди смогут установить новое приложение, даже если у них есть старые приложения, установленного, например, вы должны убедиться, что вы Дон'т иметь противоречивые контент-провайдеров. Вы потеряете ваш существующий установить базу, комментарии и т. д. и придется найти способ, чтобы получить ваши существующие клиенты для того чтобы удалить старую программу и установить новую версию. Опять же, убедитесь, что вы обеспечиваете резервные копии хранилища ключей и пароль(ы) вы используете для этой версии.
Ничего - Google ясно говорит, что приложение идентифицируется по ключам, используемым для его подписи. Следовательно, если вы потеряли ключи, вам нужно создать новое приложение.
Сегодня я столкнулся же проблема, к сожалению, у меня было два псевдонима в мой файл keystore.
Здесь я получу ответ на этот вопрос . После поиска слишком долго, наконец, я получаю, чтобы взломать ключ и пароль для этого . Я забыл свой ключ и псевдоним также файл JKS но, к счастью, я знаю кучу паролей, что я вложил в это . но найти правильное сочетание для это было для меня сложных задач .
окне появится теперь показывают псевдоним ..если вы JKS-файлом правильно .. щелкните правой кнопкой мыши на псевдоним и нажмите на "Просмотр сертификатов цепи на ".. он будет показывать в SHA1 ключевой матч .. этот ключ, который вы получаете, когда вы были загрузке APK в магазин приложений Google .
если это матч, то можно с правым файла JKS и псевдоним ..
теперь и у меня есть куча паролей на матч ..
а теперь подойдите к этой выставлять проверили поставить тот же путь, следующих .. и пароль(пароль у вас есть ) поставить любой путь в "сертификат"и
если на экране отображается ошибка, то пароль не подходят .. если это не'т показать любую ошибку, то это означает, что вы правильный файл JKS . правильный псевдоним и пароль() теперь, что вы можете загрузить ваш Android игры в плей-магазине :)
некоторое время назад я загрузил свое приложение в Google Play (когда оно называлось Android Market).
сегодня я обновил приложение, но я удалил предыдущее хранилище ключей и создал новое.
При загрузке он говорит, что APK должен быть подписан теми же сертификатами, что и предыдущая версия:
загрузка не удалась
вы загрузили APK, который подписан с другим сертификатом к вашим предыдущим APKs. Вы должны использовать то же самое сертификат.
ваши существующие APKs подписаны сертификатом(сертификатами) с отпечатком (отпечатками):
[ В SHA1: 89:2Ф:11:Фе:СЕ:Д6:чч:ДФ:65:Е7:76:3Э:ДД:А7:96:4Ф:84:ДД:БА:33 ]
и сертификат(ы), используемый для подписи APK, который вы загрузили, имеет отпечаток(ы):
[ SHA1: 20:26:F4:C1:DF:0F:2B:D9:46:03:FF:AB:07:B1:28:7B:9C:75:44: CC ]
но у меня нет этого сертификата, и я не хочу удалять и повторно публиковать приложение, потому что оно активно пользователи.
Что я могу сделать, чтобы подписать мое приложение с новым сертификатом?
перед загрузкой обновленного приложения убедитесь, что вы увеличили атрибуты android:versionCode и android:versionName в элементе файла манифеста. Кроме того, имя пакета должно быть одинаковым и the .apk должен быть подписан тем же закрытым ключом. Если имя пакета и сертификат подписи не совпадают с именем существующей версии, Market будет считать его новым приложением и не будет предлагать его Пользователям в качестве обновления.
Сравните значения владельца, SHA1 и Expiry между APK
Если значением Owner / X.509 является CN=Android Debug, O=Android, C=US , то вы подписали APK с вашим отладочным ключом , а не с исходным ключом релиза
Если значение отпечатка SHA1 отличается от исходного и обновленного APK, тогда вы не использовали один и тот же ключ подписи для обоих APK
Если значения идентификатора Owner / X.509 отличаются друг от друга, или даты истечения срока действия сертификата отличаются между двумя APK, тогда вы не использовали один и тот же ключ подписи для обоих APK
Обратите внимание, что даже если значения Owner / X.509 идентичны между двумя сертификатами, это не означает, что сертификаты идентичны – если что-то еще не соответствует – например, значения отпечатка пальца – тогда сертификаты отличаются.
соберите информацию из APK
вы можете проверить, с какими сертификатами были подписаны исходный APK и update APK, используя эти команды, используя Java keytool :
это показывает вам подробную информацию о том, как был подписан APK, например:
важные части, чтобы отметить здесь-для каждого APK-являются в SHA1 значение отпечатков пальцев,владелец значение идентификатора, и действующий от/до даты.
если это keytool команда не работает (тег -jarfile опция требует Java 7), Вы можете получить более подробную информацию через :
к сожалению, это не показывает отпечаток SHA1, но показывает личность владельца X. 509 вместе с датами истечения срока действия сертификата. Например:
Что я могу сделать?
Вам нужно будет создать приложение с новым идентификатором приложения (например, изменить с «com.example.myapp» на «com.example.myapp2») и создать новый список в Google Play.
Возможно, вам также придется изменить свой код, чтобы люди могли установить новое приложение, даже если у них установлено старое приложение, например, вам нужно убедиться, что у вас нет конфликтующих поставщиков контента.
Вы потеряете существующую базу установки, обзоры и т. Д., И вам придется найти способ заставить ваших существующих клиентов удалить старое приложение и установить новую версию.
Опять же, убедитесь, что у вас есть надежное резервное копирование хранилища ключей и паролей, которые вы используете для этой версии.
Ничего – Google ясно говорит, что приложение идентифицировано ключами, которые его подписывают. Следовательно, если вы потеряли ключи, вам нужно создать новое приложение.
Если у вас есть предыдущий файл apk с вами (резервное копирование), используйте jarSigner для извлечения сертификата из этого apk, затем используйте этот ключ или используйте keytool для клонирования этого сертификата, возможно, это поможет … Полезные ссылки: jarsigner docs и keytool docs ,
Здесь я получаю ответ на этот вопрос. После долгого поиска, наконец, я могу взломать ключ и пароль для этого. Я забыл свой ключ и псевдоним также файл jks, но, к счастью, я знаю кучу пароля, что я вложил в него. Но найти правильные комбинации для этого было для меня самой сложной задачей.
Решение – скачайте это – плагин Keytool IUI версии 2.4.1
Появится окно с псевдонимом. Если вы правильно указали файл jks. Щелкните правой кнопкой мыши по псевдониму и нажмите «Просмотреть цепочку сертификатов». Он покажет ключ SHA1. Соответствует этому ключу с помощью ключа, который вы получаете Пока вы загружали apk в магазин приложений Google …
Если он соответствует, то вы находитесь с правильным файлом jks и псевдонимом.
Теперь повезло, у меня есть куча пароля для соответствия.
Теперь перейдите к этому scrren, поместите тот же путь jks .. и пароль (среди вашего пароля) поместите любой путь в «Файл сертификата»,
Если на экране отображается какая-либо ошибка, тогда пароль не подходит. Если он не показывает никаких ошибок, значит, вы используете правильный файл jks. Правильный псевдоним и пароль () теперь с тем, что вы можете загрузить свой apk в игровой магазин 🙂
Сегодня я столкнулся с одной и той же проблемой, к сожалению, у меня было два псевдонима в файле хранилища ключей.
Я решил проблему путем изменения запятой в точку (1,5 на 1,5). См. Пример:
Некоторое время назад я загрузил свое приложение в Google Play (тогда он назывался Android Market).
Сегодня я обновил приложение, но удалил предыдущее хранилище ключей и создал новое.
При загрузке говорится, что APK должен быть подписан теми же сертификатами, что и предыдущая версия:
Upload failed
Вы загрузили 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:versionCode и android:versionName в элементе файла манифеста. Кроме того, имя пакета должно быть одинаковым и .apk должен быть подписан одним и тем же закрытым ключом. Если имя пакета и сертификат подписи не совпадают с именем существующей версии, Market будет считать это приложение новым и не предложит его пользователям в качестве обновления.
Читайте также: