Android INSTALL_FAILED_UID_CHANGED

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

Кто-нибудь знает, как решить эту проблему? По мнению некоторых пользователей, мне нужен корневой доступ для правильного удаления данных/данных, это правда? Или есть ли другой способ?

Ответ 1

Иногда вам также необходимо удалить папки с данными. Для меня у меня был пакет в пользовательском пространстве com.kikin.cts, а также каталог папок в /data/data/com.kikin.cts. Не удалось получить INSTALL_FAILED_UID_CHANGED, но после удаления папки с данными ошибка исчезла.

Ответ 2

Для корневых устройств:

Запустите команду

adb rm -rf /data/data/<your.package.name>

Для некорневого устройства:

  • Измените ApplicationId приложения. Отправьте ссылку , чтобы изменить ApplicationID.
  • Создайте и установите приложение. Приложение будет установлено успешно, поскольку оно рассматривается как новое приложение.
  • Теперь удалите это приложение. Это очистит данные.
  • Теперь измените ApplicationId на предыдущий.
  • Сборка и установка. Магия.. Она будет установлена.

Ответ 3

Перезагрузите устройство и очистите проект. В принципе, удаление сделало бы это для вас в случае, если он не попытается перезапустить.

Ответ 4

Вероятно, вы указали SharedUserID, который вызывает это.

Ответ 5

У меня есть root на моем Nexus 5, но ничего не работало, поэтому мне пришлось запускать factory reset из настроек, которые работали.

Ответ 6

Для меня трюк был сделан, сняв флажок "Проверять приложения через USB" в разделе "Параметры разработчика".

Ответ 7

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

Ответ 8

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

adb shell rm -rf /system/app/<package.name>

Ответ 9

Из оболочки ADB вы можете найти решение двумя способами. 1. сохранить данные и найти решение и 2. решение без сохранения данных

решение для 1. запускает команду adb chown -R UID:UID /data/data/your.package.name через командную строку из пути ADB.

решение для 2. - запустить команду adb rm -r /data/data/your.package.name с одного и того же пути.

Ответ 10

Я испытывал эту проблему за последние пару дней на своем тестовом устройстве Galaxy Note 3. Я использовал Calabash-Andrdoid и продолжал получать сообщение об ошибке INSTALL_FAILED_UID_CHANGED, всякий раз, когда пытались выполнить метод install_app. Я боролся с этой проблемой, потому что у меня было два тестовых устройства, испытывающих это. Я попробовал все выше, включая удаление моих/данных/данных/приложений и папок app.test. Я даже удалил аппаратные средства, которые Xamarin устанавливает с той платформы, на которой я использовал свое приложение. Я не смог найти ничего, чтобы вручную удалить устройство. Когда я попытался выполнить свою работу на третьем устройстве и обнаружил, что все работает успешно, я понял, что проблема связана с устройствами. В конце концов, единственное, что сработало для меня, было выполнить factory reset одного из устройств. Надеюсь, это поможет.

Спасибо, -Shah

Ответ 11

Думаю, я поделился бы этим, если это поможет кому-то... Я написал новую версию своего приложения в eclipse и попытался запустить ее на своем телефоне, несмотря на то, что у меня была немного более старая версия на телефоне, которую я загрузил из Google Play магазин. В Eclipse появилось диалоговое окно с вопросом, был ли я счастлив удалить существующую версию на телефоне, и я согласился. Удаление было неполным и привело к INSTALL_FAILED_UID_CHANGED.

Я попробовал большинство предложенных здесь вещей без везения. Не было видимых следов APK на моем телефоне или каких-либо файлов данных, которые я мог найти для удаления, но что-то мешало мне загружать APK на телефон из затмения. Я также не смог загрузить свою предыдущую версию бета-тестирования из Google Play - загрузка продолжалась до 100%, но затем не удалось отправить сообщение с сообщением "неизвестная ошибка" и число (вероятно, -24).

Я не решался переименовать свой пакет, потому что у меня уже есть бета-тестеры и продукты для приложений, настроенные со старым именем пакета, но я изменил имя пакета в eclipse временно, и я смог установите эту новую версию на телефон, а затем загрузите более старую версию Google Play. Обе версии сидели счастливо рядом друг с другом по телефону с тем же именем приложения и значком (но разными именами пакетов за кулисами). Затем я мог вручную удалить или оба, перетащив значок приложения на значок удаления телефона. Ручная деинсталляция удалила конфликт и исправила дефект удаления eclipse, поэтому я просто переименовал свой пакет eclipse в исходное имя и продолжал работу по-прежнему.

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

Ответ 12

В большинстве случаев INSTALL_FAILED_DEXOPT или INSTALL_FAILED_UID_CHANGED означает, что у вас недостаточно места для установки приложения.

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

adb uninstall package-name

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

некорневой

Factory reset Settings -> Backup and reset -> Factory data reset (по крайней мере, для Samsung S5)

Корневой (или эмулятор)

adb shell "rm -rf /data/data/package-name" 

Ответ 13

Хорошо, поэтому для моего LG NEXUS 4, корневого, вот решение: (

  • убедитесь, что у вас где-то подписанное приложение apk или без знака)

и

  • вы удалили этот файл со своего телефона (если существует, конечно)

Скажем, это: app-debug-unaligned.apk

Теперь в консоли вы пишете:

adb push app-debug-unaligned.apk /sdcard/
adb shell
su
rm -fr /data/local/tmp/app-debug-unaligned.apk
rm -fr /data/data/app-debug-unaligned.apk

Теперь выйдите из adb и вызовите

adb shell su -c "pm install /sdcard/app-debug-unaligned.apk"

В

Ответ 14

Здесь что-то не распространяется на существующие ответы. Это происходило со мной на эмуляторе. Если я reset пользовательские данные, я получаю INSTALL_FAILED_DEXOPT в первый раз, но INSTALL_FAILED_UID_CHANGED после этого. Я обнаружил, что rm -r/data/data/com.foo.bar достаточно для reset для первого состояния.

Фактический виновник в моем случае - это имя метода java, из-за которого dexopt терпит неудачу. Обратите особое внимание на то, что в logcat. Вот что отдало:

I/PackageManager( 1275): Running dexopt on: com.foo.bar
E/dalvikvm( 2857): Invalid name: '__jni_setLocation'
E/dalvikvm( 2857): Trouble with item 14787 @ offset 0x43b68
E/dalvikvm( 2857): Cross-item verify of section type 0005 failed
E/dalvikvm( 2857): ERROR: Byte swap + verify failed
E/dalvikvm( 2857): Optimization failed
W/installd(  941): DexInv: --- END '/data/app/com.foo.bar-1.apk' --- status=0xff00, process failed
E/installd(  941): dexopt in='/data/app/com.foo.bar-1.apk' out='/data/dalvik-cache/[email protected]@[email protected]' res=65280
W/PackageManager( 1275): Package couldn't be installed in /data/app/com.foo.bar-1.apk

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

Ответ 15

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

Ответ 16

Для меня было немного больше. Просто удаление /data/data/appfolder не помогло.

Дополнительная причина заключалась в том, что мои внешние библиотеки не были включены в файл .apk, потому что имя папки было lib вместо libs. Это вызвало [INSTALL_FAILED_DEXOPT] во время установки apk, а затем [INSTALL_FAILED_UID_CHANGED].

В этом случае менялось изменение имени папки libs.

Ответ 17

Решение для некорневого устройства. Перейдите в диспетчер приложений и удалите приложение под названием "Selendroid" и повторите попытку. Это решение работает для меня.

Ответ 18

Я исправлю это, возможно, это сработает кто-то еще.

Я перезагружаю свой телефон, а затем удаляю еще несколько приложений. И попробуйте снова установить, он работает!

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

Ответ 19

Использование

adb shell

перейдите в оболочку.
Затем выполните команду:

rm -rf/data/data/имя пакета

пожалуйста, repleace имя пакета с вашим собственным, например com.map.map

Ответ 20

Для всех, кто запускает тесты стиля Junit со своего компьютера и получает эту ошибку, - хотя консоль сообщила мне, что проблема с моим приложением (упакованная в формате "com.myapp.stuff" ), реальной проблемой был мой тест пакет кода, который, если вы работаете на устройстве, устанавливается как отдельное приложение с именем пакета, например "com.myapp.stuff.test". Удаление тестового кода "приложение" с помощью диспетчера приложений и удаление моего фактического приложения решили проблему для меня. Я отправляю этот ответ здесь, чтобы сохранить кого-то еще в момент "Духа".

Ответ 21

Такая же проблема на устройстве Mediacom, сначала

$ adb install -r platforms/android/out/android-debug-unaligned.apk
3958 KB/s (22887489 bytes in 5.647s)
     pkg: /data/local/tmp/android-debug-unaligned.apk
     Failure [INSTALL_FAILED_DEXOPT]

то очень стойкий:

$ adb install -r platforms/android/out/android-debug-unaligned.apk
4949 KB/s (22887489 bytes in 4.515s)
     pkg: /data/local/tmp/android-debug-unaligned.apk
     Failure [INSTALL_FAILED_UID_CHANGED]

Выполнение factory reset не изменило динамику (я получил обе ошибки в последовательности).

  • установка одного и того же приложения с использованием другого id
  • установка другого приложения с предыдущим идентификатором не

Корень не вариант, решение для меня было очисткой кэша: теперь оскорбительный идентификатор приложения работает нормально, и мне не приходилось factory reset (снова).

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

Ответ 22

Я удалил /data/data/my.package.name и /data/app/my.package.name.apk, проблема все еще сохраняется.

однако я нашел папку /data/user/0/my.package.name, удалить ее и решить проблему.

Ответ 23

Я нашел решение, которое работает как на некорневом устройстве, так и на эмуляторе. Хотя вы не можете напрямую удалять папки данных на ненагруженном устройстве, вы можете использовать команду pm для этого:

  • Выполнить adb shell
  • Запустите pm uninstall <app name> (т.е. com.example.myapp)
  • Запустите pm uninstall <test app name> (т.е. com.example.myapp.test) - вы можете получить сообщение об ошибке, если тестовое приложение не было установлено ранее.

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

Пробовал его на "Nexus 5" и на "OnePlus One".

Ответ 24

Это, очевидно, из-за неправильной деинсталляции (возможно, из-за неправильного подключения кабеля).

РЕШЕНИЕ Скачайте SDMaid из магазина воспроизведения и удалите файлы Corpse (файлы нежелательной почты). Повторно запустить приложение. (Но вам нужно укрепить свое устройство)

Ответ 25

Я встретил подобную проблему. Решением является то, что вы не удалили весь компонент приложения. Моим решением является: удаление /data/data/com.eg.android.AlipayGphone вручную.

хорошо работает для меня.

Я надеюсь, что это полезно для u!

Ответ 26

Rooting и factory reset не были для меня вариантом, но я смог найти более старую версию APK и установить ее (я предполагаю, что она была такой же, которая не удалась должным образом). После удаления этого снова я смог установить новые версии.