История установленных/удаленных приложений

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

Ответы (2)

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

adb shell "pm list packages -u -3"

дает вам список всех приложений , которые вы установили ( -3ограничивает его приложениями, которые не были предварительно установлены — по сути, это означает «сторонние»), включая те, которые вы уже удалили ( -u). Возвращаемый список выглядит следующим образом:

package:com.ceco.gm2.gravitybox
package:com.mohammadag.xposedpreferenceinjector

Это все еще не дает вам деталей, которые вы хотели, поэтому давайте приведем некоторую помощь из ответа Firelord здесь :

Во-первых, нам нужно вырезать ведущий package:, поэтому мы изменим нашу команду на pm list packages -u -3 | awk -F: '{print $NF}':

com.ceco.gm2.gravitybox
com.mohammadag.xposedpreferenceinjector

Уже лучше. Теперь Firelord начинает упоминать dumpsysкоманду для деталей, которые мы интегрируем в то, что у нас есть:

for pkg in $(pm list packages -u -3 | awk -F: '{print $NF}'); do
    dumpsys package $pkg
done

Это должно дать вам полную информацию о каждом приложении, включая дату их установки ( firstInstallTime), последнее обновление ( lastUpdateTime) и, надеюсь, также время удаления — к сожалению, на устройстве, которое я тестировал прямо сейчас, удаленные приложения не появлялись. несмотря на -uпараметр, который может быть проблемой конкретного устройства (поскольку в pmдокументации это четко описано).

Чтобы дать вам то же самое, что и однострочный код, который также должен работать в Windows:

adb shell "for pkg in \$(pm list packages -u -3 | awk -F: '{print \$NF}'); do dumpsys package \$pkg; done"
+1. На самом деле у меня был тот же подход, но я скорее разместил комментарий, так как это -uне pmпринесло мне ничего хорошего.
@Firelord Хорошо, так что это не только я. Может быть, это устаревший параметр, который больше не используется с Android xy Как обычно, документация - это редкость для них.

Вы можете использовать эту команду в Linux:

adb shell logcat | grep installдля установки приложения см. в logcat

adb shell logcat | grep uninstallдля удаления приложения см. logcat

В противном случае в Windows вы можете использовать Cygwin. Вы можете скачать отсюда

Есть ли аналог для Windows?
@jabadejat Grep доступен для Windows, но не упакован по умолчанию. Он также должен быть частью Busybox для Android, чтобы вы могли выполнять поиск на своем устройстве, а не на ПК.
Поскольку журнал хранится в циклическом буфере, поэтому старые записи обычно перезаписываются в течение дня, похоже, это не поможет найти дату установки приложения.
Как получить размер Logcat: stackoverflow.com/questions/6321555/…
В Windows: adb shell "logcat | grep install". Обратите внимание на кавычки: это говорит о том adb shell, что нужно запустить все это на Android, где он находит logcatкоманду, а также grep. Но дело в том, что ограниченное использование. Таким образом, вы можете увидеть, что произошло за последние несколько минут, но уж точно не пару дней назад.
PS: Я только что сделал тестовую деинсталляцию. Ваша команда этого не дала. Что сработало: adb shell "logcat -v time | grep -i uninstall". Обратите внимание на -iнечувствительный к регистру grep (в журнале он указан как «Удалить»), а также -v timeпараметр (OP хотел увидеть , когда это произошло, а не только то, что это произошло :)