Я шукаю можливість отримати як імена пакетів, так і загальні назви програм, встановлених на пристрої Android через ADB - або принаймні для отримання загального імені, якщо ім'я пакета відомо. Швидкий пошук на нашому веб-сайті викликав два пов’язані питання, але вони не вирішують мою проблему:
- Як отримати загальну назву програми, що має назву пакета (наприклад, com.android.blabla)? (командний рядок або доданий додаток) не працює через ADB (але використовує додаток, який потрібно шукати вручну), що відповідає запиту ОП
- Як знайти додаток на основі назви пакета? просто повертається до пошуку URL-адрес у Google Play , який не завжди підходить (оскільки не всі програми доступні там).
Я шукаю спосіб отримати інформацію безпосередньо з пристрою, якщо це можливо - не "будь-яким" способом (включаючи "веб-пошуки" або "через додаток"), як це стосується цих двох питань.
Я знаю, що для отримання детальної інформації про пакет доступно кілька інструментів:
adb dumpsys package
: Хоча в цьому списку перелічено всі пакунки з купою деталей, "загальна назва" не відображаєтьсяadb shell pm list
: дає лише назви пакетуaapt
змогли б отримати загальне ім'я, але потрібно спочатку витягнути.apk
файл з пристрою, що не дуже зручно (і очевидно, буде досить повільно, коли встановлено багато та / або великих додатків)
Я щось пропустив? Я знаю, що інформація повинна бути на пристрої (як інакше вона могла б показувати назви додатків у графічному інтерфейсі? Сумніваюсь, Android розбирає .apk
файл щоразу, коли GUI потребує "загального імені"). То чи є спосіб отримати це, безпосередньо використовуючи 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 - це те, що мені це потрібно)