Как переустановить случайно удаленное приложение через ADB?

Вчера при удалении вредоносных программ с телефона я случайно удалил приложение с помощью команды adb:

pm uninstall -k --user 0 

Я подозреваю, что виновником является com.sec.factory.camera, так как после этого несчастного случая приложение камеры вылетает каждый раз, когда я пытаюсь его запустить.

Я попытался переустановить его с помощью любой из этих двух команд

pm install com.sec.factory.camera
pm install --user 0 com.sec.factory.camera

но они вернули мне сообщение об ошибке «не могу открыть не файл».

Я также пытался загрузить APK на свой телефон и установить его с Android, но в конце процесса установки я получил сообщение «приложение не установлено».

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

Мой телефон — Samsung s7 Edge без рута, работающий под управлением Oreo 8.0.

Приложение все еще должно быть где-то внутри /system, поэтому попробуйте найти его абсолютное местоположение и установить оттуда.

Ответы (6)

Технически команда adb shell pm unistall -k --user 0 <package_name>не удаляет приложение с устройства. Вместо этого он просто удаляет его у пользователя.

Есть несколько способов вернуть удаленное приложение пользователю: один из них — через оболочку adb с помощью команды:

adb shell cmd package install-existing <package_name>

Или крайним способом будет через сброс настроек устройства.

я получилunkown command: install-existing

Я удалил пакет «com.google.android.partnersetup», когда собирался удалить другое приложение. Я не смог восстановить его методом Бо Лоусона. Вместо этого я нашел этот способ:

pm dump com.google.android.partnersetup | grep Path    

Это дает нам несколько путей. Я собираюсь использовать один из них:
" codePath= /system/priv-app/GooglePartnerSetup"

Наконец, я устанавливаю приложение, которое находится в этом направлении. Приложение имеет то же имя, что и папка приложения, с «.apk» в конце:

pm install -r --user 0 /system/priv-app/GooglePartnerSetup/GooglePartnerSetup.apk

Я надеюсь, что это поможет, но я не знаю, что именно это делает. Мой источник: комментарий от Mac23

Мой путь

  1. Установить Solid Explorer
  2. Открыть настройки
  3. Включить корневое хранилище
  4. Вернуться на главную
  5. Открыть гамбургер-меню
  6. Выберите корень
  7. Перейти к системе
  8. Перейти к приложению
  9. Найдите свое приложение
  10. Установите это

Ответ Бо Лоусона сработал отлично и является лучшим ответом для тех, у кого нет root-доступа, вот что я сделал:

Установите приложение еще раз:

adb shell cmd package install-existing <package-name>

Затем удалите его:

adb shell pm uninstall <package-name>

Затем установите приложение или его обновление из Google Play или из браузера.

У меня была такая же проблема с моим телефоном Android 6. На Android 6 adb shell cmd ...команды недоступны.

Я исправил это следующим образом (требуется root или кастомное восстановление с полным доступом к файловой системе):

  1. Найдите APK-файл удаленного пакета в /system/priv-appпапке
  2. Переместите APK-файл в другое место (например, /data/app)
  3. Перезагрузить телефон
  4. Переместите APK-файл обратно в исходное место.
  5. Перезагрузить телефон

Я надеюсь, что это может помочь другим, у кого также нет Android 7 или новее.

В тех случаях, когда install-existingрешение недоступно, работает метод dandan657 . Но я нашел более простой способ поиска местоположения существующего APK. В оболочке ADB введите:

pm list packages -f -u | grep <package name>

Вы получите результат в таком формате:

package:<full path to the apk>=<package name>

Пример:

package:/system/app/Photos/Photos.apk=com.google.android.apps.photos

Это полезные необязательные параметры, которые pm list packagesпринимает команда:

-f: See their associated file.
-d: Filter to only show disabled packages.
-e: Filter to only show enabled packages.
-s: Filter to only show system packages.
-3: Filter to only show third party packages.
-i: See the installer for the packages.
-u: Also include uninstalled packages.
--user <USER_ID>: The user space to query.

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

Ссылка: https://android-doc.github.io/tools/help/shell.html#pm