6

私はapkファイルのコンテンツを読み取るためにaaptツールを使用しています:

aapt d badging myapk.apk

しかし、出力が多すぎます。パッケージ名とバージョン名だけが必要です。それを制限する方法はありますか?

更新:ウィンドウコマンドで動作するようになりました。こんな風に見える:

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

これが私にとって魅力のように機能するトリックです。私はBacktrack5r2を使用しています。GNU bash、バージョン4.1.5(1)-リリース(i486-pc-linux-gnu)

「./aapt」実行可能ファイルがシェルまたはスクリプトの同じディレクトリにあると仮定します。実行可能ファイルへのパスを追加するだけではない場合、または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の「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

これがお役に立てば幸いです。

于 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 に答える