Android application package .apk
file is a software archive containing the program's code, resources, assets, certificates, and manifest file. The archive format is based on the JAR (Java ARchive) which is based on the ZIP archive format. (MIME type: application/vnd.android.package-archive
.)
Similarly, Alpine Linux package management .apk
files are digitally signed tar.gz
archives containing programs, configuration files, and dependency metadata. Its repository is just a folder containing these files and an index file. These .apk
files are often called "a-packs", but I'm not sure whether the extension comes from that nickname or vice versa – the origin is pretty irrelevant.
These two usages aren't related in any way and the packages are incompatible together.
In addition to these, an .apk
file may also refer to
- Active Tutor (Project) by 4C Media, Inc.
- GameSpy Arcade (Service) by IGN Entertainment, Inc.
- Train Simulator (Packaged Activity) by Microsoft Corporation
It is not that uncommon that different programs have the same file extensions. While file extensions were originally meant to be generic and universal like .txt
for plain text and .gfx
for graphics (and later .csv
for Comma-Separated Variables), they were soon closely associated with certain programs.
One could think that there are plenty of different three-character combinations of A-Z and 0-9 for every program have its own extension as 36^3 results in 46,656 variations. However, as there isn't any authority allocating extensions, programmers tend to use extensions that could be easily associated with the name of their program, like .wks
for Microsoft Works and .wpd
for WordPerfect document. Therefore we already have conflicts even in widely used file formats:
.rpm
: RealPlayer Media file / RedHat Package Manager package / RunPaint Multicolor Graphic
.qif
: QuickTime Image / Quicken Interchange Format / DESQview compressed font archive
.gba
: GrabIt scripts / Game Boy Advance ROM image
- In many video file formats the extension only tells about the container, but a file type can contain different types of compression and the same compression can be used across different file types.
Besides confusion, this only causes actual problems when a system associates a file extension to be opened with a certain program, like Windows Explorer. There are other methods than extensions for distinguishing file types like interpreter directives (e.g. #!/bin/bash
shebangs at the beginning of a Unix/Linux script) or (registered) MIME type (see RFC 6838), a line of text stating the file type before sending the actual bitstream, like HTTP header Content-Type: text/html; charset=UTF-8
. Adobe PDF is a good example as the file begins with %PDF-1.5
(PDF and version) stating this is a PDF file, and it can contain XObjects that are bitstreams of other filetypes, like /Filter/DCTDecode
for JPEG images.