Ошибка 102 (INSTALL_FAILED_UID_CHANGED) на Android
Ошибка 102 (полный текст: Failure [INSTALL_FAILED_UID_CHANGED]) возникает при установке APK-файла на Android. Система выдает ее, когда обнаруживает конфликт идентификатора пользователя (UID) для имени пакета. Каждое приложение в Android получает уникальный UID. Если для одного имени пакета в базе данных системы уже есть запись с другим UID, установка прерывается.
Типичные сценарии появления:
- Попытка установить APK, подписанный другим ключом, чем уже установленная версия.
- Ручная установка после обновления Android, изменившего UID.
- Частичное удаление приложения с сохранением данных.
Почему возникает конфликт UID
Основная причина: система Android хранит в /data/system/packages.xml связку имя_пакета → UID. Если при установке нового APK с тем же именем пакета система находит в этом файле запись с UID, отличным от того, который присвоила бы новому приложению, она блокирует установку.
Конкретные триггеры:
- Смена signing key. Разработчик выпустил обновление, подписанное другим keystore. Android считает это другим приложением с тем же именем, но требует уникального UID.
- Остаточные записи после удаления. При удалении через
adb uninstallбез флага-kданные приложения удаляются, но запись вpackages.xmlможет сохраниться при сбое. - Изменение политики UID после обновления ОС. В Android 6.0+ система стала строже: UID теперь привязывается не только к имени пакета, но и к signing certificate. Это ломает совместимость со старыми APK.
- Повреждение кэша Package Installer. Кэш установщика содержит устаревшие данные о UID, что приводит к ложному срабатыванию защиты.
Как исправить ошибку 102: 4 рабочих способа
1. Перезагрузка устройства
Иногда конфликт носит временный характер (например, после быстрого переключения пользователей). Перезагрузка очищает состояние Package Manager.
- Нажмите и удерживайте кнопку питания.
- Выберите «Перезагрузить».
- После полной загрузки повторите установку APK.
2. Очистка данных Пакетного установщика
Этот метод удаляет кэшированные записи о конфликтующих UID.
- Откройте Настройки → Приложения (или Приложения и уведомления).
- Найдите Пакетный установщик (может называться «Установщик пакетов» или
Package Installer). - Нажмите Очистить данные и Очистить кэш.
- Попробуйте установить APK снова.

Скриншот настроек Android: очистка данных и кэша приложения Пакетный установщик
3. Полное удаление приложения через ADB
Если приложение уже присутствует в системе, удалите его вместе с данными.
# Удаление приложения и его данных
adb uninstall com.example.package
# Если вышеуказанное не помогает (требуется root)
adb shell rm -rf /data/app/com.example.package*
После этого установите APK заново. Убедитесь, что новый APK подписан тем же ключом, что и предыдущая версия (если это обновление).
4. Принудительная установка с флагами ADB
Используйте флаги -r (перезапись) и -d (разрешить downgrade), чтобы обойти проверку UID.
adb install -r -d your_app.apk
-r— перезаписывает существующее приложение, сохраняя его данные.-d— разрешает установку версии ниже текущей, что может сбросить конфликтующий UID.
Важно: Если приложение уже установлено, сначала выполните adb uninstall com.example.package, затем команду с флагами.
Профилактика ошибки 102
- Для пользователей: устанавливайте приложения только из Google Play. При ручной установке APK сначала удаляйте магазинную версию.
- Для разработчиков: используйте один и тот же keystore для всех версий приложения. При отладке на устройстве с уже установленной релизной версией либо используйте тот же signing key, либо меняйте
applicationIdвbuild.gradle. - После обновления Android: если ошибка появилась у системного приложения, дождитесь обновления от производителя или установите версию из магазина, совместимую с новой версией ОС.