Читайте меньше информации о файле apk с помощью инструмента aapt - PullRequest
4 голосов
/ 20 марта 2012

Я использую инструмент aapt для чтения содержимого файла apk:

aapt d badging myapk.apk

Но на выходе слишком много. Мне просто нужно имя пакета и название версии. Есть ли способ ограничить это?

Обновление: Я получил его для работы с окном cmd. Выглядеть так:

aapt d badging myapk.apk | find "pack"

Ответы [ 5 ]

12 голосов
/ 20 марта 2012

// попробуйте это

aapt d badging myapk.apk | grep 'pack'

для меня это показывается как

padmakumar@padmakumar-desktop:~$ aapt d badging ./Desktop/NhpAndroid_tablet_k4.apk  | grep 'pack'
package: name='com.ti.et.nspire.android' versionCode='1' versionName='1.0'
5 голосов
/ 02 октября 2012

Вот трюк, который работает как шарм для меня. Я использую Backtrack 5 r2; GNU bash, версия 4.1.5 (1) -релиз (i486-pc-linux-gnu)

Предполагается, что исполняемый файл "./aapt" находится в том же каталоге оболочки или скрипта. Если нет, просто добавьте путь к исполняемому файлу или используйте export aapt = "/ path / to / aapt" и используйте переменную path.

out = $ (./ aapt dump badging GameCIH.apk | grep 'application-label:' | awk -F: 'match ($ 0, ":") {print substr ($ 0, RSTART + 1) } '| tr -d "'")

С ярлык приложения: 'GameCIH' на apk

Только:

GameCIH

И последнее. Если вы хотите указать имя пакета или версии, сделайте следующее:

out = $ (./ aapt dump badging GameCIH.apk | grep 'versionName =' | awk -F: 'match ($ 0, "versionName =") {print substr ($ 2, RSTART-8)} '| tr -d "'")

Это вернет, например:

versionName = 3.0.0

Просто измените значения versionName на все, что вам нужно.

Замените RSTART-8 на что-то вроде этого: RSTART + 4 , и это вернет:

3.0.0

Надеюсь, это поможет!

2 голосов
/ 16 октября 2012
aapt d badging myapk.apk | grep package

для Windows, загрузите UnxUtils, чтобы получить grep и многие другие команды Linux: http://unxutils.sourceforge.net/UnxUtils.zip

1 голос
/ 02 марта 2017

Вот функция Bash:

# Display package name and version of APK file(s)
apk(){
    (
        set -o pipefail

        for path in "$@"; do
            aapt dump badging "$path" \
            | awk $'
                BEGIN {
                    p=""
                    v=""
                }

                match($0, /^package: name=\'([^\']*)\'/, a) {
                    p=a[1]
                }

                match($0, /versionName=\'([^\']*)\'/, b) {
                    v=b[1]
                }

                END {
                    if (length(p) && length(v)) {
                        print p, v
                    }
                }'
        done
    )
}
1 голос
/ 20 марта 2012
aapt d badging myapk.apk | awk '/package/ {print($2)}' | awk '{print(mstr[split($1, mstr, \"=\")])}' | tr -d \"'\"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...