it-swarm.com.de

Anwendungsname / Etikett über ADB-Shell oder Terminal abrufen

Ich entwickle eine Anwendung, die ADB Shell für die Schnittstelle zu Android) - Geräten verwendet, und ich benötige eine Möglichkeit, den Anwendungsnamen oder die Bezeichnung einer Anwendung auszudrucken, wenn der Paketname angegeben wird.

Kurz gesagt, ich benötige eine Möglichkeit, App-Namen (d. H. "Angry Birds v1.0.0") für vom Benutzer installierte Anwendungen über adb Shell Abzurufen.

Gibt es Licht in die Sache? Jede Hilfe wird auf diesem geschätzt.

48
hamsteyr

adb Shell pm list packages zeigt eine Liste aller installierten Paketnamen an.

Sie können dann dumpsys | grep -A18 "Package \[my.package\]", um die Paketinformationen wie Versionskennungen usw

70
o0rebelious0o

geben Sie einfach den folgenden Befehl in die Eingabeaufforderung ein, nachdem Sie die App gestartet haben:

adb Shell dumpsys window windows | find "mCurrentFocus"

wenn Sie den Befehl auf einem Linux-Terminal ausführen, ersetzen Sie find durch grep

20
akshay_k

Wenn Sie die App-ID des Pakets kennen (z. B. org.mozilla.firefox), ist dies ganz einfach. Erstens, um den Pfad der eigentlichen Paketdatei der AppId zu erhalten,

$  adb Shell pm list packages -f com.google.Android.apps.inbox
package:/data/app/com.google.Android.apps.inbox-1/base.apk=com.google.Android.apps.inbox

Jetzt kannst du etwas grep | sed-Magie anwenden, um den Pfad zu extrahieren: /data/app/com.google.Android.apps.inbox-1/base.apk

Danach bietet sich das aapt-Tool an:

$  adb Shell aapt dump badging /data/app/com.google.Android.apps.inbox-1/base.apk
...
application-label:'Inbox'
application-label-hi:'Inbox'
application-label-ru:'Inbox'
...

Wieder ein bisschen Grep-Magie, um das Label zu bekommen.

8
Love_for_CODE

Ein Shell-Skript, um dies zu erreichen:

#!/bin/bash

# Remove whitespace
function remWS {
    if [ -z "${1}" ]; then
        cat | tr -d '[:space:]'
    else
        echo "${1}" | tr -d '[:space:]'
    fi
}

for pkg in $(adb Shell pm list packages -3 | cut -d':' -f2); do
    apk_loc="$(adb Shell pm path $(remWS $pkg) | cut -d':' -f2 | remWS)"
    apk_name="$(adb Shell aapt dump badging $apk_loc | pcregrep -o1 $'application-label:\'(.+)\'' | remWS)"
    apk_info="$(adb Shell aapt dump badging $apk_loc | pcregrep -o1 '\b(package: .+)')"

    echo "$apk_name v$(echo $apk_info | pcregrep -io1 -e $'\\bversionName=\'(.+?)\'')"
done
2
smac89