.aab
files store their xml
in a protocol buffer format:
There is manifest folder having Android Manifest.xml file in the apk it is in binary format but in .aab it is real XML file compiled into a protocol buffer format because this allows to transform it easily.
And aapt2
has a convert
subcommand
that Converts an apk between binary and proto formats.
, and it will convert a .apk
file that contains only an AndroidManifest.xml
in proto format. Thus:
# Extract the AndroidManifest.xml directly
# without -p, unzip will recreate the directory structure.
unzip -p my_aab.aab base/manifest/AndroidManifest.xml > AndroidManifest.xml
# Create a dummy .apk with the proto-formatted AndroidManifest.xml
zip proto_version.apk AndroidManifest.xml
# Convert the proto-formatted AndroidManifest.xml into an apk-formatted XML
aapt2 convert proto_version.apk -o version.apk
# Now dump the badging
# I don't know why, but dump badging fails, so add `|| true` to make it succeed
aapt dump badging version.apk || true
Unfortunately, the final command doesn't succeed:
W/ResourceType(42965): No known package when getting value for resource number 0x7f100000
AndroidManifest.xml:47: error: ERROR getting 'android:icon' attribute: attribute value reference does not exist
But it does print the versionName
and versionCode
as expected. You can ignore the failure with || true
, or you can use the dump xmltree
subcommand to dump the raw XML, which succeeds:
aapt dump xmltree version.apk AndroidManifest.xml