Я ищу возможность получить как имена пакетов, так и общие имена приложений, установленных на устройстве Android через ADB, или, по крайней мере, получить общее имя, если имя пакета известно. Быстрый поиск на нашем сайте поднял два связанных вопроса, но они не решили мою проблему:
- Как получить общее имя приложения с именем пакета (например, com.android.blabla)? (командная строка или включенное приложение) не работает через ADB (но использует приложение, с которым вам нужно искать вручную), что соответствует запросу OP
- Как найти приложение по имени пакета? просто возвращается к поиску URL в Google Play , который не всегда подходит (так как там не все приложения доступны).
Я ищу способ получения информации непосредственно с устройства, если это возможно, а не "любым" способом (включая "поиск в Интернете" или "через приложение"), поскольку эти два вопроса имеют его.
Я знаю, что есть несколько инструментов для получения деталей пакета:
adb dumpsys package
: Хотя в этом списке перечислены все пакеты с подробной информацией, «общее имя» не отображаетсяadb shell pm list
: только дает имена пакетовaapt
сможет получить общее имя, но для этого потребуется сначала извлечь.apk
файл с устройства, что не очень удобно (и, очевидно, будет довольно медленным, если установлено много и / или больших приложений)
Я что-то пропустил? Я знаю, что информация должна быть на устройстве (как еще она может отображать имена приложений в графическом интерфейсе? Я сомневаюсь, что Android анализирует .apk
файл каждый раз, когда графическому интерфейсу нужно «общее имя»). Так есть ли способ получить его, используя ADB напрямую?
TL; DR
Фон (если кому-то любопытно): я хочу иметь возможность быстро получить список пользовательских приложений с любого из моих устройств, не возвращаясь к акробатике. Список имен их пакетов я могу получить, используя их adb shell pm list -3
, но так как они являются только именами пакетов, распознавание приложений является догадкой. Поэтому, если бы была какая-то команда ADB для получения общего имени для данного имени пакета, я мог бы просто использовать цикл вроде for pkg in $(adb shell pm list -3); do echo "- $(adb <whatever_the_command_is> $pkg) ($pkg)"; done
- и получить список всех установленных пользовательских приложений в «удобочитаемом формате» вместе с именами их пакетов.
Случаи использования:
- Посмотрите, какие «лишние» приложения установлены (которые я мог бы удалить)
- Перекрестные списки с нескольких устройств
- Документация ;)
- и, вероятно, больше (но выше 3 это то, что мне нужно)