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



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

aapt d badging myapk.apk

但产出太多了。我只需要包名和版本名。有什么办法限制它吗?

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

aapt d badging myapk.apk | find "pack"

//尝试这个

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'

这里有一个对我来说很有魅力的技巧。我使用的是Backtrack 5 r2;GNU bash,版本4.1.5(1)-发布(i486-pc-linux-GNU)

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

out=$(./aapt转储标记GameCIH.apk|grep'应用程序标签:'|awk-F:'匹配($0,":"){打印子字符串($0、RSTART+1)}'|tr-d")

来自apk 上的应用标签:'GameCIH'

仅限于:

GameCIH

最后一件事。如果您想要软件包名称或版本名称,请执行以下操作:

out=$(./aapt转储标记GameCIH.apk|grep'versionName='|awk-F:'匹配($0,"versionName="){print substr($2,RSTART-8)}'|tr-d"')

这将返回例如:

版本名称=3.0.0

只需将值versionName更改为所需的值即可。

RSTART-8更改为类似的内容:RSTART+4,它将返回:

3.0

我希望这能有所帮助!

aapt d badging myapk.apk | grep package

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

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

下面是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
    )
}

相关内容

  • 没有找到相关文章

最新更新