Ответ 1
adb shell pm list packages
предоставит вам список всех установленных имен пакетов.
Затем вы можете использовать dumpsys | grep -A18 "Package \[my.package\]"
для получения информации о пакете, такой как идентификаторы версий и т.д.
Я разрабатываю приложение, использующее ADB Shell для взаимодействия с устройствами Android, и мне нужно каким-то образом распечатать имя приложения или метку приложения, учитывая, возможно, имя своего пакета.
Короче говоря, мне нужен способ получить имена приложений (т.е. Angry Birds v1.0.0) для установленных пользователем приложений через adb shell
.
Любой свет по этому вопросу? Любую помощь оценивают по этому поводу.
adb shell pm list packages
предоставит вам список всех установленных имен пакетов.
Затем вы можете использовать dumpsys | grep -A18 "Package \[my.package\]"
для получения информации о пакете, такой как идентификаторы версий и т.д.
Если вы знаете идентификатор приложения пакета (например, 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-магии, чтобы получить ярлык.
просто введите следующую команду в командной строке после запуска приложения:
adb shell dumpsys window windows | find "mCurrentFocus"
если выполнение команды на терминале linux замените find grep
Оболочка 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