6

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

aapt d badging myapk.apk

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

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

aapt d badging myapk.apk | find "pack"
4

5 回答 5

14

//尝试这个

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'
于 2012-03-20T10:08:55.603 回答
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 "'")

来自aplication-label:'GameCIH' on apk

仅:

游戏CIH

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

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

这将返回例如:

版本名称=3.0.0

只需将值versionName更改为您需要的任何值。

将RSTART-8更改为以下内容:RSTART+4并且将返回:

3.0.0

我希望这会有所帮助!

于 2012-10-02T04:21:52.383 回答
2
aapt d badging myapk.apk | grep package

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

于 2012-10-16T03:58:47.860 回答
1
aapt d badging myapk.apk | awk '/package/ {print($2)}' | awk '{print(mstr[split($1, mstr, \"=\")])}' | tr -d \"'\"
于 2012-03-20T10:07:34.450 回答
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
    )
}
于 2017-03-02T08:50:36.487 回答