O que é o formato de ficheiro APK?
Um arquivo com a extensão .apk contém um arquivo comprimido com uma aplicação, jogo ou firmware para o sistema Android. Os pacotes APK são construídos sobre o formato de contentor ZIP/JAR, o que significa que qualquer ferramenta de arquivo padrão pode abrir e inspecionar o seu conteúdo. O Google Play impunha originalmente um limite de 100 MB para downloads de .apk, com até dois arquivos de expansão de até 2 GB cada para recursos adicionais; desde agosto de 2021, o Google Play exige que as novas aplicações sejam publicadas como .AAB (Android App Bundles), que geram APKs divididos e otimizados para o dispositivo no momento da instalação, em vez de enviar um único pacote monolítico.
Estrutura do arquivo APK
A estrutura dos arquivos APK baseia-se no arquivo JAR - podem conter as seguintes subpastas e arquivos:
res- com uma descrição dos recursos de forma não compilada,lib- contém fontes compiladas e bibliotecas de aplicações, divididas de acordo com diferentes plataformas de computação (ex:arm64-v8a,x86_64),META-INF- com arquivos contendo informações sobre o pacote, por exemplo, o arquivoMANIFEST.MF, ou certificados,assets- que contém vários recursos utilizados pela aplicação,classes.dex- bytecode Dalvik/ART compilado executado pelo runtime do Android,AndroidManifest.xml- manifesto codificado em binário declarando as permissões, componentes e requisitos de SDK da aplicação,resources.arsc- tabela de recursos pré-compilada que mapeia IDs para strings, layouts e drawables.
Os arquivos Android Package são utilizados para criar e distribuir programas para plataformas móveis que operam no sistema Android. O conteúdo dos arquivos .apk pode ser descompactado com a maioria dos programas de descompressão que suportam compressão ZIP, ou inspecionado simplesmente renomeando o arquivo para .zip. Para manter a integridade, os pacotes são protegidos pelo APK Signature Scheme v2/v3 (e v4 para atualizações incrementais), com a instalação recusada se a assinatura não coincidir. A instalação de pacotes .apk fora da Play Store não é permitida por padrão - os utilizadores devem ativar a permissão Instalar aplicações desconhecidas nas definições do Android, ou enviar o pacote via adb install app.apk. Aplicações demasiado grandes para um único .apk podem ser distribuídas como .XAPK, que agrupa um APK base com um ou mais APKs divididos num único arquivo.
Segurança e proteção
RISCO: HIGHO APK é o vetor número 1 de malware no Android: o sideloading ignora a verificação do Google Play Protect. Lista de verificação de risco para utilizadores: instale apenas de fontes fidedignas (Google Play, F-Droid, APKMirror - que verifica as assinaturas contra as do programador), verifique se as permissões solicitadas coincidem com o propósito da aplicação, nunca instale um APK que chegou não solicitado via chat/SMS (campanhas de «smishing») e compare a assinatura da aplicação ao atualizar. O truque de renomear para zip permite inspecionar o conteúdo antes de instalar.
Detalhes do formato
em resumoProgramas que abrem arquivos APK
Detalhes técnicos
especificação profunda| Codificação | Binário |
| Ordem dos bytes | Little-endian |
| Contentor | Arquivo ZIP (também válido como JAR) |
| Compressão | DEFLATE por entrada; entradas sensíveis ao alinhamento armazenadas sem compressão (método STORED) e zipaligned |
| Assinatura / integridade | APK Signature Scheme v2/v3 (bloco inserido antes do diretório central ZIP); v4 para atualizações incrementais no dispositivo; instalação recusada em caso de incompatibilidade de assinatura |
| Bytes mágicos | 50 4B 03 04 - cabeçalho de arquivo local ZIP «PK» padrão no offset 0; distinguido do ZIP simples pela presença de AndroidManifest.xml e classes.dex |
| Arquivos internos | AndroidManifest.xml, classes.dex (+ classes2.dex …), resources.arsc, res/, lib/, assets/, META-INF/ |
| Bytecode | Dalvik Executable (DEX) em classes.dex - compilado a partir de código-fonte Java/Kotlin, executado pelo ART (Android Runtime) |
| Alinhamento | zipalign impõe limite de 4 bytes para entradas não comprimidas; Android 15+ visa alinhamento de página de 16 KB |
| Formato do manifesto | XML codificado em binário (AXML) declarando nome do pacote, permissões, componentes Activity/Service/Provider, minSdkVersion, targetSdkVersion |
| Layout de lib nativa | subdiretório lib/<ABI> por arquitetura: arm64-v8a, armeabi-v7a, x86, x86_64 |
| Tabela de recursos | resources.arsc - arquivo binário plano que mapeia IDs de recursos inteiros para strings, layouts, drawables e variantes de configuração |
| Tamanho típico | 2 MB - 1.5 GB; APKs de aplicações base comummente 5-100 MB; jogos com recursos integrados atingem a gama superior |
| Tipo MIME | application/vnd.android.package-archive |
| Plataforma | Android (nativo); executável em Windows, Linux, macOS via emuladores (BlueStacks, Android Studio AVD, Waydroid) |
| Lançado | 2008 (Android 1.0) |
| Versão mais recente | APK Signature Scheme v3 (Android 9, 2018); v4 incremental (Android 11, 2020) |
| Padrão aberto | Sim · livre de royalties |
| Especificação | source.android.com |