Не удается переустановить приложение, удаленное через ADB

Недавно я получил Huawei P30 и использовал adb для удаления некоторых предустановленных приложений, которые я не хотел использовать. Я зашел слишком далеко и удалил приложение системной галереи ( com.android.gallery3d), которое оказалось проблематичным для многих вещей, таких как открытие сделанных снимков непосредственно из приложения камеры.

Я попытался переустановить его, но столкнулся с несколькими проблемами:

  • При попытке установить APK, который все еще находится на телефоне /system/priv-app/Gallery2, я получаю сообщение INSTALL_PARSE_FAILED_NO_CERTIFICATESоб ошибке. Полная ошибка:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl30820468.tmp/base.apk: /data/app/vmdl30820468.tmp/base.apk: File res/drawable-xxxhdpi-v4/img_patten_7.jpg in manifest does not exist]
  • При попытке установить версию, которую я нашел в Интернете, я получаю INSTALL_FAILED_VERSION_DOWNGRADEстранное сообщение, поскольку приложение должно быть удалено. Он не отображается в pm list packages, однако запуск dumpsys package com.android.gallery3dдает результат, и версия действительно более поздняя, ​​чем та, которую я пытаюсь установить (9.1.1.309 против 9.0.15.355). Использование -dфлага при установке не помогает, так как это не приложение для отладки. Я не мог найти более свежую версию в Интернете.

Есть ли способ переустановить это приложение без сброса настроек? В качестве альтернативы, есть ли способ установить другую версию? Похоже, com.android.gallery3dэто общее имя пакета, я был бы не против иметь «стандартный» Android.

Когда APK все еще находится в /system/priv-app/*, приложение не удаляется. Вы уверены, что не просто отключили его? Какую команду вы использовали для удаления через ADB?
я использовал adb uninstall -k --user 0 com.android.gallery3d. Попытка запустить его снова приводит к not installed for 0ошибке (с флагом или без -k). Не указание пользователя тоже выдает ошибку,DELETE_FAILED_INTERNAL_ERROR
Это только удалило его для этого одного пользователя, но оставило APK там (теоретически второй пользователь все еще мог запустить его). Вы пробовали adb shell "pm install -r <package.apk>" (replacing <package.apk>` по пути к установленному файлу APK) или, если он у вас есть на вашем ПК, adb install -r <APKfile>? Важная вещь -r(переустановите, даже если она есть).
Флаг -rне помогает, одинаковые проблемы с обоими способами (apk, оставленный на устройстве, и тот, который я скачал)
Это уродливо. Просто догадываюсь: что происходит, когда вы вводите --user 0и здесь? Тогда он не сможет ни заявить о неправильной версии, ни о том, что она уже существует. Если это тоже не сработает, попробуйте pm default-state app.name(взято из этого сообщения XDA ). У меня никогда не было такой ситуации.
Указание --user 0при установке не помогло. Я добавил полную ошибку к вопросу при попытке с приложением на телефоне, поскольку это, похоже, связано не с текущим состоянием приложения, а с самим apk. pm defaul-stateговорит Package com.android.gallery3d new state: default, но, похоже, не имеет никакого эффекта (приложение по-прежнему нигде не видно, даже после перезагрузки телефона)
Не могли бы вы загрузить APK-файл, который /system/priv-app/Gallery2где-то находится, и поделиться с нами ссылкой? Я хочу попробовать, может ли это быть проблемой с APK.
Конечно: send.firefox.com/download/69b457af2b74203a/… (срок действия истекает через 7 дней или 100 загрузок, при необходимости могу перезалить). Обратите внимание, что этот APK уже находится в телефоне, а не тот, который я скачал. Я только что попытался подписать его, но получаю ту же ошибку, что и раньше ( INSTALL_PARSE_FAILED_NO_CERTIFICATESпотому что файл отсутствует в res/drawables...). Я также попытался изменить загруженный код версии, используя apktoolи подписав его самостоятельно, но мне отказали, поскольку подпись не совпадает с «существующей» версией.
@Jukurrpa похоже, что ваша проблема такая же, как: переустановить системное приложение, которое удалено для текущего пользователя? К сожалению, там это тоже не решено и пересекается с тем, что я просил вас попробовать здесь (Firelord указал мне на это, еще раз спасибо!)
Вау, спасибо за ссылку на этот вопрос, adb shell cmd package install-existing com.android.gallery3dсработало! Я не знал об этой команде. Не могли бы вы опубликовать это как ответ, чтобы я мог его принять?
Большой! И спасибо, что отчитались. Теперь, когда вы подтвердили, я сделал это ответом. Хотя цепочка комментариев здесь устарела для вас, я предлагаю оставить ее. Все эти «возможности» могут пригодиться кому-то еще. Наслаждаться!

Ответы (1)

Решение можно найти в вопросе Переустановить системное приложение, которое удалено для текущего пользователя? (что осталось без ответа):

adb shell cmd package install-existing com.android.gallery3d

Обратите внимание, что это не работает в Android 5 (отсюда и другой вопрос), так как команда cmdбыла добавлена ​​​​только позже (я точно не помню, когда, но она доступна по крайней мере в Android 7).