Как работать с INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES без удаления

Я попытался переустановить apk

$adb install -r new.apk

И он показывает ошибку:

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

Одним из решений является удаление и установка new.apk, который отлично работает.

Но мне интересно, смогу ли я перестроить apk и переустановить без удаления. Например. изменить некоторую конфигурацию в AndroidManifest.xml или не подписывать APK и т.д.

Было бы очень признательно, если бы вы могли рассказать мне весь смысл "INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES".

Ответ 1

Это означает, что новая копия вашего приложения (на вашей машине разработки) была подписана другим ключом подписи, чем старая копия вашего приложения (установлена ​​на устройстве/эмуляторе). Например, если это устройство, вы можете положить старую копию с другой машины разработки (например, на другую машину разработчика). Или старый подписан с вашим производственным ключом, а новый подписан с вашим отладочным ключом.

Ответ 2

Я столкнулся с этим, тестируя новый Xoom. Я ранее устанавливал свое приложение из Marketplace. Позже, пытаясь протестировать новую версию приложения, я столкнулся с этой ошибкой.

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

Ответ 3

Это случилось со мной, когда другой разработчик в команде построил наше приложение на аппаратном устройстве, к которому я пытался развернуть. Удаление приложения из оборудования устранило мою проблему.

Ответ 4

Это команда удаления приложения с устройства с помощью adb:

adb uninstall <package name>

Ответ 5

Я получил эту ошибку даже после удаления оригинального APK, что было загадочным. Наконец, я понял, что я настроил несколько пользователей на моем Nexus 7 для тестирования и что приложение все еще установлено для одного из других пользователей. Как только я удалил его для всех пользователей, ошибка исчезла.

Ответ 6

Я изменил имя пакета во время кодирования обновления, чтобы я мог его отлаживать на своем устройстве через Eclipse, не удаляя старую версию, которая была установлена. Не возвращая имя пакета, которое я использовал при попытке переустановки, я получил эту же ошибку. Используя то же имя пакета, переустановка прошла успешно.

Ответ 7

Я столкнулся с другим вариантом использования, где я получил аналогичную ошибку. Когда сначала я получил ошибку, я впал в панику и удалил /data/data/{package.name} После этого я попытался, и моя проблема все еще присутствовала. Затем я попытался удалить, он не удался.

Затем я удалил файл apk, присутствующий в /system/app (требуемый корневой доступ), и попытался удалить, и он был успешным.

После этого я попытался переустановить apk, он сработал.

Ответ 8

Просто удалите старую сборку с устройства и переустановите ее. Поскольку device.keystore уже существует в устройстве, просто удалите сборку и переустановите APK, и все это.

Спасибо

Ответ 9

Для чего это стоит, я столкнулся с этой проблемой после добавления нового плагина к моему проекту в Кордове. У меня была кордовая сборка и установка непосредственно на устройство через USB.

Я исправил его, удалив приложение с устройства, а при следующем развертывании проблем не было.

Ответ 10

Если вы столкнулись с неудачным развертыванием устройства или эмулятора Andorid с ошибкой "Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]" в окне вывода, просто удалите существующее приложение на устройстве или эмулятор и переустановите. Отладочные сборки будут использовать сертификат отладки, в то время как сборка релизов будет использовать ваш настроенный сертификат. Эта ошибка просто позволяет вам узнать, что сертификат приложения, установленного на устройстве, отличается от того, который вы пытаетесь установить. В сценариях без разработки (хранилища приложений) это может быть индикатором поврежденного или измененного приложения, которое не безопасно устанавливать на устройство.

Ответ 11

Ничто из выше не работало для меня. Проблема для меня была в том, что у меня был неправильный источник в моем Java Build Path для android-support-v7-appcompat. Когда вы перейдете в Project > Путь сборки > Настроить путь сборки > . На вкладке "Источник" убедитесь, что у вас есть поддержка android-support-v7-appcompat/gen, android-support-v7-appcompat/libs и android-support-v7-appcompat/src и ничего больше. Нажмите "ОК", и он должен работать.

Ответ 12

У меня была такая же ошибка сегодня, но проблема не была точно такой же. Я использую ADB с Android, установленным в VirtualBox. Я попытался установить разные версии своего приложения (подписанный/не подписанный, режим отладки/выпуска) и получил две ошибки: INSTALL_FAILED_UID_CHANGED и INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES.

Теперь, глядя на /data/data/{package.name}, я обнаружил кучу файлов, которые все еще присутствовали после удаления приложения. Я попытался rm -rf их без успеха: у меня были ошибки ввода/вывода.

Решением было следующее:

  • Завершение работы VM
  • Смонтируйте изображение VDI с помощью vdfuse (чтение/запись)
  • Восстановите файл изображения Partition1 с помощью e2fsck
  • Umount и перезапустите VM

Ответ 13

У меня была такая же проблема, пока я не понял, что работает симулятор, и adb пытается установить на нем

Ответ 14

Поскольку проверка основана на имени пакета, вы можете изменить имя пакета внутри файла config.xml или манифеста для другого имени, которое вы хотите.

При публикации приложения не забывайте, чтобы изменить имя!

Ответ 15

У меня возникла проблема с выполнением задачи gradle connectedDebugAndoidTest (или connectedAndroidTest) в Genymotion. Запуск его на нормальном эмуляторе решил проблему.

Ответ 16

Я думаю, ваше приложение установлено под другой учетной записью (функция режима нескольких учетных записей). Вы можете удалить приложение в меню "Настройки"> "Приложения"> "имя приложения"> "Удалить".