使用aapt工具阅读apk文件的更少信息

时间:2012-03-20 10:01:26

标签: android windows aapt

我正在使用aapt工具来阅读apk文件的内容:

aapt d badging myapk.apk

但输出太多了。我只需要包名和版本名。有什么方法可以限制吗?

更新:我让它在窗口cmd上工作。看起来像这样:

aapt d badging myapk.apk | find "pack"

5 个答案:

答案 0 :(得分:12)

//试试这个

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'

答案 1 :(得分:5)

这是一个对我有吸引力的技巧。 我正在使用Backtrack 5 r2; GNU bash,版本4.1.5(1)-release(i486-pc-linux-gnu)

假设“./aapt”可执行文件位于Shell或Script的同一目录中。如果不只是添加可执行文件的路径或使用export aapt =“/ path / to / aapt”并使用变量路径。

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

来自apk

上的 aplication-label:'GameCIH'

仅限:

<强> 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 :(得分:2)

aapt d badging myapk.apk | grep package

对于Windows,下载UnxUtils以获取grep以及更多Linux命令:     http://unxutils.sourceforge.net/UnxUtils.zip

答案 3 :(得分:1)

aapt d badging myapk.apk | awk '/package/ {print($2)}' | awk '{print(mstr[split($1, mstr, \"=\")])}' | tr -d \"'\"

答案 4 :(得分:1)

这是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
    )
}