私はapkファイルのコンテンツを読み取るためにaaptツールを使用しています:
aapt d badging myapk.apk
しかし、出力が多すぎます。パッケージ名とバージョン名だけが必要です。それを制限する方法はありますか?
更新:ウィンドウコマンドで動作するようになりました。こんな風に見える:
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'
これが私にとって魅力のように機能するトリックです。私は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
これがお役に立てば幸いです。
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
)
}