Подтвердить что ты не робот

Получить имя приложения/ярлык через оболочку или терминал АБР

Я разрабатываю приложение, использующее ADB Shell для взаимодействия с устройствами Android, и мне нужно каким-то образом распечатать имя приложения или метку приложения, учитывая, возможно, имя своего пакета.

Короче говоря, мне нужен способ получить имена приложений (т.е. Angry Birds v1.0.0) для установленных пользователем приложений через adb shell.

Любой свет по этому вопросу? Любую помощь оценивают по этому поводу.

4b9b3361

Ответ 1

adb shell pm list packages предоставит вам список всех установленных имен пакетов.

Затем вы можете использовать dumpsys | grep -A18 "Package \[my.package\]" для получения информации о пакете, такой как идентификаторы версий и т.д.

Ответ 2

Если вы знаете идентификатор приложения пакета (например, org.mozilla.firefox), это легко. Сначала, чтобы получить путь к фактическому файлу пакета appId,

$  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

Теперь вы можете сделать grep | sed magic для извлечения пути: /data/app/com.google.android.apps.inbox-1/base.apk

После этого инструмент aapt пригодится:

$  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'
...

Снова немного grep-магии, чтобы получить ярлык.

Ответ 3

просто введите следующую команду в командной строке после запуска приложения:

adb shell dumpsys window windows | find "mCurrentFocus"

если выполнение команды на терминале linux замените find grep

Ответ 4

Оболочка script, чтобы выполнить это:

#!/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