INSTALL_FAILED_UPDATE_INCOMPATIBLE, когда я пытаюсь установить скомпилированный .apk на устройство

291

Я скомпилировал лаунчер Trebuchet из CyanogenMod 9 и пытаюсь установить его с помощью adb:

$ adb install out/target/product/generic/system/app/Trebuchet.apk
3986 KB/s (7870141 bytes in 1.928s)
    pkg: /data/local/tmp/Trebuchet.apk
Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]

Я пробовал на Nexus S с CM9 и Galaxy Nexus со стоковым JB. Почему я получаю эту ошибку?

РЕДАКТИРОВАТЬ: В моем случае я попытался переустановить пакет системы с помощью диспетчера пакетов. Это не поддерживается, поэтому я получил эту ошибку. Источник ошибки может отличаться в вашем случае.

артем
источник
2
на некоторых последних устройствах, имеющих функцию нескольких пользователей, проверьте, установлено ли приложение для других пользователей (например, гостевой вход в систему). Тестер в моей компании боролся с этой проблемой в течение часа, когда он пришел ко мне, мне понадобилось 5-10 минут, чтобы узнать, что одно и то же приложение было установлено под другим гостевым логином на этом устройстве, поэтому не было показывается на домашнем экране или нет даже в настройках
Шириш Хервейд

Ответы:

500

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

Мустафа Гювен
источник
27
Работало у меня, но мне тоже пришлось один раз перезагрузиться.
droidgren
28
Мне пришлось зайти в «Настройки» -> «Управление приложениями», чтобы найти приложение и выбрать «Удалить» оттуда, так как его больше нигде не было видно.
Дэвид Конлиск
23
Также может потребоваться удалить из всех учетных записей пользователей (в моем Nexus 10 было 3 пользователя).
Тайлер Кайзер
1
@TylerKiser Спасибо за советы по этому вопросу.
Джейкоб Холлоуэй
1
что если я просто попытаюсь обновить существующее приложение? это удалит все мое последнее приложение, сохраненное локально
чудо-дох
184

Пытаться

adb uninstall package-name

Меня устраивает. Я удалил свое приложение с помощью Titanium Backup. Тем не менее, я думаю, что резервная копия Titanium полностью не удалила мое приложение.

einverne
источник
1
Я заметил то же самое, используя DevDrawer. Это сработало.
tir38
1
Спасибо! Это спасло меня от огромной необъяснимой головной боли. Не уверен, как я попал в это состояние ... Я отлаживаю приложение в Xamarin Studio и Visual Studio, и оно работало нормально, пока это не ... ну да ладно.
Джейми
1
Когда все остальное на принятый ответ не удалось ... это сработало.
ДенисВелу
Большой! Просто и легко. Нет необходимости делать перезагрузку с этим решением.
Taciosd
Меня устраивает. Прежде чем я попытался вручную удалить и перезагрузить и ничего не изменилось, только с помощью команды ADB это работает. Спасибо.
ricky.tribbia 10.09.15
101

Чтобы избежать этой проблемы, достаточно удалить приложение.

INSTALL_FAILED_UPDATE_INCOMPATIBLE

но иногда даже удаление сообщения возникает снова, это происходит в Android OS 5.0+, так что это решение:

Перейдите к Settings> Appsи вы найдете ваше приложение с сообщением:

«Не установлен для этого пользователя» введите описание изображения здесь

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

введите описание изображения здесь

Другие варианты:

  • Удалите старое приложение и установите снова.

  • Используйте команду Android Debug Bridge:

    adb удалить [ИМЯ ПАКЕТА]

Jorgesys
источник
2
Спасибо! Это то, что мне было нужно. Почему и когда они начали делать это таким образом?
Ник
видимо начиная с OS
5.0+
1
Первоначально я не смог найти свое неустановленное приложение в меню «Настройки» -> «Приложения». Оказалось, что в Lollipop 5.1.1 удаленное приложение указывалось по имени пакета, а не по имени приложения. Таким образом, если вы произвели удаление adb, а установка adb все равно не удалась, найдите ваше неустановленное приложение под именем вашего пакета. Таким образом, com.acme.wileycoyote будет указан в алфавитном порядке под буквой "c", а не "w".
Йоджимбо
Спасибо, это работает! Мой телефон не имеет опции «Удалить для всех пользователей», я удаляю его, войдя в систему всех пользователей ...
DawnYu
1
Что за «все пользователи», когда пользователь ровно один - МЕНЯ !!! Во всяком случае, это работает - проголосовал.
WindRider
21

Два способа, которыми можно работать

1: удалить приложение с мобильного устройства вручную

2: Откройте командную строку, проследите путь adbи выполните следующую команду

adb uninstall your_package_name
дхарам
источник
2
Единственный способ, который работает для устройств без дисплея.
ДенисКолодин
1
например: "adb uninstall net.gavin.hello", где имя пакета в AndroidManifest.xml указано как "package =" net.gavin.hello ""
Гэвин Симпсон,
9

Я просто переименовал пакет, и он работал для меня.

Или, если вы используете Ionic, вы можете удалить приложение и повторить попытку, это происходит, когда ionic обнаруживает, что приложение, которое вы развертываете, не из той же сборки. Это часто случается, когда вы переходите с ПК.

артем
источник
Ничто другое не помогло мне. Спасибо за отличную идею!
Кен Песписа
2
Слишком много работы, я бы сделал резервную копию и удалить apk и переустановил его.
Певик
не работал на Android 6.0.1. Пришлось удалить приложение на устройстве и переустановить тот же пакет.
kakyo
13
«Я просто переименовал пакет», это не обходной путь, фактически вы создаете другое приложение!
Jorgesys
8
  1. перейдите по адресу: ваша папка adb \ sdk \ platform-tools \
  2. тип cmd
  3. введите: adb remount в командном окне
  4. adb shell
  5. су
  6. rm /system/app/YourApp.apk
  7. Перезагрузите ваше устройство
user3278378
источник
что значит перемонтировать? Могу ли я с помощью этого сохранить релиз и отладочную версию и легко смонтировать и перемонтировать их?
piotrek1543
2
Не имеет особого смысла, так как пользовательские apks не хранятся, /system/appно/data/app
m0skit0
@ piotrek1543 adb remountперемонтирует системный раздел как доступный только для чтения, а не только для чтения по умолчанию.
m0skit0
8

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

Реаз Муршед
источник
1
Тоже самое. Попробуйте проверить процесс обновления. Так что удаление не вариант.
Мартин
6

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

Я удалил во всех учетных записях, и это сработало впоследствии.

neteinstein
источник
Вы имеете в виду аккаунты Google?
CACuzcatlan
Да, именно то, что я имею в виду.
Нетейнштейн
5

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

adb install -r myapk.apk

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

В этом случае вам нужно будет удалить apk с вашего устройства перед попыткой установки. Однако это также может повлиять на ваше приложение, поскольку ваша первоначальная подпись может быть привязана к определенным API-разработчикам, поэтому вам может потребоваться обновить консоль новыми учетными данными.

пиксель
источник
4

Я установил файловый менеджер Astro и искал предыдущую версию apk-файла, нашел ее на SD-карте и удалил apk-файл с помощью файлового менеджера Astro.

ФАПЧ
источник
4

Если ваше устройство поддерживает несколько пользователей, возможно, вам придется удалить приложение для каждой учетной записи.

Я обычно использую ADB, и это делает трюк adb uninstall <your-package-name>

Марк Пазон
источник
4

если APK встроен в проект с файлом Android.mk. Может быть, это из-за знака сертификата был изменен.

в моей проблеме я добавил LOCAL_CERTIFICATE: = платформа. так как оригинальный apk подписан без этого тега.

fordreamxin
источник
Это действительно комментарий, а не ответ. С немного большим количеством повторений вы сможете оставлять комментарии .
Энамул Хасан
2

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

Я закончил тем, что сделал:

1) Загрузите последнюю версию приложения из магазина приложений

2) Приложение все еще не было видно в диспетчере устройств, пока я не перезапустил свое устройство.

3) Удалить приложение из диспетчера устройств

4) Запустите мой проект снова

5) все работает

Надеюсь, это поможет кому-то

Yka
источник
2

C: \ android-sdk \ platform-tools \ adb.exe: сбой команды с кодом выхода 1

Вывод ошибки: adb: не удалось установить app \ platform \ android \ app \ build \ output \ apk \ debug \ app-debug.apk: Ошибка [INSTALL_FAILED_UPDATE_INCOMPATIBLE: пакет com.example. app1подписи не соответствуют ранее установленной версии; не обращая внимания!]

Решение:

Вы уже установили приложение app1на телефон (в основном загрузка с игровой консоли или замена ключа загрузки).
Удалите приложение.

Больше деталей:

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

При удалении приложения не существует версии приложения Play Store, поэтому при установке новой версии на телефон происходит несоответствие.

Надеюсь, это поможет.

Манохар Редди Поредди
источник
1

Зайдите в Настройка / Приложения / Поиск вашего приложения и удалите ...

Это сработало для меня

Луис Коломе
источник
1
  1. Зайдите в Настройка / Приложения / Поиск вашего приложения и удалите ...
  2. открыть командную строку и "удалить adb"

Это сработало для меня

jettimadhuChowdary
источник
1

Для пользователей MIUI, кроме обычной опции отладки USB, обязательно включите также эти параметры:

Установка через USB Отладка по USB
(Настройки безопасности)

затем примите приглашение при повторной установке приложения.

stevyhacker
источник
1

Я получил ту же проблему и сделал следующее, чтобы исправить это.

  1. Настройки> Хранение> Очистить кэшированные данные
  2. Настройки> Приложения> Удалить показанные там приложения. Я удалил свои приложения, но он показывал там.
  3. Перезагрузите, а затем все прошло нормально.
Панкай
источник
3
2-й пункт помог. В моем случае приложение не было установлено для текущего пользователя, но было установлено для других пользователей. Итак, я нажал на приложение в списке приложений и на странице сведений, нажал кнопку «Дополнительно» (три вертикальные точки). Там была опция «Удалить для всех пользователей». Это сделало это для меня. Спасибо!
Harisewak
1

Я просто потратил час, пытаясь отладить это, а затем понял, что подключен к эмулятору, а не к телефону. Поэтому, несмотря на то, что я успешно удалил приложение на своем телефоне, оно все равно не получалось. Глупая ошибка, но, возможно, это поможет кому-то еще.

Адам Кац
источник
0

В моем случае я установил приложение из Playstore и после того, как я пытаюсь запустить его из Eclipse или Android Studio, чтобы он попытался установить снова на тот APK, который не позволяет.

Итак, прежде всего вы должны удалить этот Siged APK и после этого вы должны попробовать.

Спасибо.

Пратик Бутани
источник
0

RankoR @ Вы должны установить приложение с другого компьютера. в моем случае именно здесь возникла проблема .. все, что вам нужно сделать, это просто удалить приложение и переустановить его или запустить его с компьютера, на котором вы работаете ... это может быть поздний ответ, но это поможет кому-то ... спасибо

Мухаммед Натар
источник
0

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

Единственный способ это исправить: - отключить Instant Run в Android Studio - установить из Android Studio (это должно работать только отсюда) - удалить приложение

теперь он должен быть чистым для установки из Google Play или ADB.

Игнасио Томас Креспо
источник
0

это произошло, если вы соберете свой apk с другого компьютера и обновите его с другого компьютера.

Прашант Джаджал
источник
Какое решение для этого случая?
Дпаксони
0

Если в вашем файле манифеста есть эта строка -

андроид: sharedUserId = "android.uid.system"

вызывает эту ошибку! просто прокомментируйте эту строку, и вы готовы!

DesigningLives
источник
0

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

Решение такое же, как и в других случаях - удалите приложение на устройстве / симуляторе и запустите снова.

Андрия
источник
0

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

Чтобы узнать, как передать требуемый debug.keystore, чтобы вы не получили сообщение «На устройстве уже есть приложение с тем же приложением, но с другой подписью. Для продолжения вам придется удалить существующее приложение». (и потерять ваши данные). См. Обновление приложения на другом компьютере с тем же debug.keystore в Android

Пол Эффрем
источник
0

Samsung Galaxy Phones имеет функцию, известную как Безопасная папка, которая удаляет приложение из этой проблемы.

также adb uninstall packagename не может удалить приложение из защищенной папки.

Саид Арианманеш
источник