Szukam możliwości pobrania zarówno nazw pakietów, jak i nazw pospolitych aplikacji zainstalowanych na urządzeniu z systemem Android za pośrednictwem ADB - lub przynajmniej odzyskania nazwy pospolitej, jeśli nazwa pakietu jest znana. Szybkie wyszukiwanie w naszej witrynie przyniosło dwa powiązane pytania, ale nie rozwiązały mojego problemu:
- Jak uzyskać wspólną nazwę aplikacji o nazwie pakietu (np. Com.android.blabla)? (linia poleceń lub dołączona aplikacja) nie działa przez ADB (ale korzysta z aplikacji, z którą musisz ręcznie wyszukać), pasując do żądania OP
- Jak znaleźć aplikację na podstawie nazwy pakietu? po prostu wraca do wyszukiwania adresu URL w Google Play , co nie zawsze pasuje (ponieważ nie wszystkie aplikacje są tam dostępne).
Szukam sposobu, aby uzyskać informacje bezpośrednio z urządzenia, jeśli to możliwe - nie „w żaden sposób” (w tym „wyszukiwania w Internecie” lub „za pośrednictwem aplikacji”), ponieważ mają to dwa pytania.
Wiem, że dostępnych jest wiele narzędzi do uzyskania szczegółowych informacji o pakiecie:
adb dumpsys package
: Chociaż zawiera listę wszystkich pakietów z wieloma szczegółami, „nazwa zwyczajowa” nie jest wyświetlanaadb shell pm list
: podaje tylko nazwy pakietówaapt
byłby w stanie uzyskać wspólną nazwę, ale wymagałby najpierw pobrania.apk
pliku z urządzenia, co nie jest tak naprawdę wygodne (i oczywiście będzie dość powolne przy zainstalowanych wielu i / lub dużych aplikacjach)
Przegapiłem coś? Wiem, że informacje muszą znajdować się na urządzeniu (jak inaczej może wyświetlać nazwy aplikacji w GUI? Wątpię, czy Android analizuje .apk
plik za każdym razem, gdy GUI potrzebuje „nazwy pospolitej”). Czy jest więc sposób, aby go opanować, używając bezpośrednio ADB?
TL; DR
Tło (jeśli ktoś jest ciekawy): Chcę móc szybko uzyskać listę aplikacji użytkownika z dowolnego z moich urządzeń, bez konieczności powrotu do akrobatyki. Lista ich nazw pakietów, których mogę użyć adb shell pm list -3
, ale ponieważ są to tylko nazwy pakietów, rozpoznawanie aplikacji jest zgadywaniem. Więc jeśli byłoby jakieś polecenie ADB do odzyskania wspólnej nazwy dla danej nazwy pakietu, mógłbym po prostu użyć pętli podobnej do for pkg in $(adb shell pm list -3); do echo "- $(adb <whatever_the_command_is> $pkg) ($pkg)"; done
- i uzyskać listę wszystkich zainstalowanych aplikacji użytkownika w „czytelnym dla człowieka formacie” wraz z nazwami ich pakietów.
Przypadków użycia:
- Zobacz, jakie aplikacje „zbędne” są zainstalowane (które mogę usunąć)
- Listy kontrolne z wielu urządzeń
- Dokumentacja;)
- i prawdopodobnie więcej (ale do tego potrzebne są powyższe 3)