# APK Files for Android: What the .apk Extension Actually Contains
#
# Every Android app you install arrives as an APK — a single packaged file
# with the .apk extension. Most people tap it, the app appears, and the file
# itself stays a mystery. Here is what is actually inside.
#
# An APK is a zip archive with a structure Android expects:
# - AndroidManifest.xml: the app's identity card — package name, version,
# and the permissions it will ask for.
# - Classes.dex: the compiled code, sometimes split into several dex files
# for larger apps.
# - Resources (res/ and resources.arsc): layouts, images, and the strings
# you read on screen, often in several languages.
# - Assets and native libraries (lib/): extra data files, and code compiled
# for specific processors (arm64, armeabi, x86).
# - META-INF: the signatures that prove the file is the developer's build
# and has not been repacked by someone else.
#
# Why this matters before installing: the manifest tells you the permissions,
# the version code tells you if the file is older than the one on your phone,
# and the signature tells you whether the update really comes from the same
# developer. Three checks, all visible before you press install.
#
# My full pre-install checklist lives with my notes on APK files for Android
# (https://a...content-available-to-author-only...a.pk/), updated whenever a new Android release changes the
# packaging.
print("Know what is inside the file before you install it.")
IyBBUEsgRmlsZXMgZm9yIEFuZHJvaWQ6IFdoYXQgdGhlIC5hcGsgRXh0ZW5zaW9uIEFjdHVhbGx5IENvbnRhaW5zCiMKIyBFdmVyeSBBbmRyb2lkIGFwcCB5b3UgaW5zdGFsbCBhcnJpdmVzIGFzIGFuIEFQSyDigJQgYSBzaW5nbGUgcGFja2FnZWQgZmlsZQojIHdpdGggdGhlIC5hcGsgZXh0ZW5zaW9uLiBNb3N0IHBlb3BsZSB0YXAgaXQsIHRoZSBhcHAgYXBwZWFycywgYW5kIHRoZSBmaWxlCiMgaXRzZWxmIHN0YXlzIGEgbXlzdGVyeS4gSGVyZSBpcyB3aGF0IGlzIGFjdHVhbGx5IGluc2lkZS4KIwojIEFuIEFQSyBpcyBhIHppcCBhcmNoaXZlIHdpdGggYSBzdHJ1Y3R1cmUgQW5kcm9pZCBleHBlY3RzOgojICAgLSBBbmRyb2lkTWFuaWZlc3QueG1sOiB0aGUgYXBwJ3MgaWRlbnRpdHkgY2FyZCDigJQgcGFja2FnZSBuYW1lLCB2ZXJzaW9uLAojICAgICBhbmQgdGhlIHBlcm1pc3Npb25zIGl0IHdpbGwgYXNrIGZvci4KIyAgIC0gQ2xhc3Nlcy5kZXg6IHRoZSBjb21waWxlZCBjb2RlLCBzb21ldGltZXMgc3BsaXQgaW50byBzZXZlcmFsIGRleCBmaWxlcwojICAgICBmb3IgbGFyZ2VyIGFwcHMuCiMgICAtIFJlc291cmNlcyAocmVzLyBhbmQgcmVzb3VyY2VzLmFyc2MpOiBsYXlvdXRzLCBpbWFnZXMsIGFuZCB0aGUgc3RyaW5ncwojICAgICB5b3UgcmVhZCBvbiBzY3JlZW4sIG9mdGVuIGluIHNldmVyYWwgbGFuZ3VhZ2VzLgojICAgLSBBc3NldHMgYW5kIG5hdGl2ZSBsaWJyYXJpZXMgKGxpYi8pOiBleHRyYSBkYXRhIGZpbGVzLCBhbmQgY29kZSBjb21waWxlZAojICAgICBmb3Igc3BlY2lmaWMgcHJvY2Vzc29ycyAoYXJtNjQsIGFybWVhYmksIHg4NikuCiMgICAtIE1FVEEtSU5GOiB0aGUgc2lnbmF0dXJlcyB0aGF0IHByb3ZlIHRoZSBmaWxlIGlzIHRoZSBkZXZlbG9wZXIncyBidWlsZAojICAgICBhbmQgaGFzIG5vdCBiZWVuIHJlcGFja2VkIGJ5IHNvbWVvbmUgZWxzZS4KIwojIFdoeSB0aGlzIG1hdHRlcnMgYmVmb3JlIGluc3RhbGxpbmc6IHRoZSBtYW5pZmVzdCB0ZWxscyB5b3UgdGhlIHBlcm1pc3Npb25zLAojIHRoZSB2ZXJzaW9uIGNvZGUgdGVsbHMgeW91IGlmIHRoZSBmaWxlIGlzIG9sZGVyIHRoYW4gdGhlIG9uZSBvbiB5b3VyIHBob25lLAojIGFuZCB0aGUgc2lnbmF0dXJlIHRlbGxzIHlvdSB3aGV0aGVyIHRoZSB1cGRhdGUgcmVhbGx5IGNvbWVzIGZyb20gdGhlIHNhbWUKIyBkZXZlbG9wZXIuIFRocmVlIGNoZWNrcywgYWxsIHZpc2libGUgYmVmb3JlIHlvdSBwcmVzcyBpbnN0YWxsLgojCiMgTXkgZnVsbCBwcmUtaW5zdGFsbCBjaGVja2xpc3QgbGl2ZXMgd2l0aCBteSBub3RlcyBvbiBBUEsgZmlsZXMgZm9yIEFuZHJvaWQKIyAoaHR0cHM6Ly9hLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5hLnBrLyksIHVwZGF0ZWQgd2hlbmV2ZXIgYSBuZXcgQW5kcm9pZCByZWxlYXNlIGNoYW5nZXMgdGhlCiMgcGFja2FnaW5nLgoKcHJpbnQoIktub3cgd2hhdCBpcyBpbnNpZGUgdGhlIGZpbGUgYmVmb3JlIHlvdSBpbnN0YWxsIGl0LiIp