APK (Android Package Kit) é um formato de arquivo compactado usado para distribuir e instalar aplicativos no Android. Cada aplicativo que o usuário baixa do Google Play ou instala manualmente é um arquivo APK. De acordo com Android Open Source Project, 2026, o formato é baseado no padrão ZIP e contém código compilado, recursos, manifesto e assinatura digital.
Principais pontos
APK (Android Package Kit) é um formato de arquivo no qual um aplicativo Android é empacotado para distribuição. Tecnicamente, APK é um arquivo ZIP com uma estrutura específica contendo todos os componentes necessários para o aplicativo funcionar em um dispositivo.
O formato APK surgiu com a primeira versão do Android em 2008. Foi baseado no padrão JAR (Java Archive), que por sua vez é baseado em ZIP. Essa herança garantiu compatibilidade com ferramentas de arquivo existentes — qualquer arquivador abre APK como um ZIP comum.
Google Play é o canal principal de distribuição de APK, mas o formato também é usado em outros cenários: instalação direta via navegador (sideloading), lojas corporativas de aplicativos, testes em dispositivos de desenvolvedor e instalação em emuladores. De acordo com a Statista, cerca de 15% das instalações de aplicativos Android em 2025 ocorrem fora do Google Play.
A estrutura interna do APK é estritamente regulamentada: cada aplicativo deve conter arquivos e diretórios específicos. Violar a estrutura leva a erros de instalação.
| Arquivo/Diretório | Finalidade |
|---|---|
| AndroidManifest.xml | Manifesto do aplicativo: permissões, componentes, versão do SDK |
| classes.dex | Bytecode DEX compilado (pode haver vários arquivos) |
| resources.arsc | Recursos compilados: strings, estilos, layouts |
| res/ | Recursos não compilados: imagens, fontes, XML |
| lib/ | Bibliotecas nativas (.so) para diferentes arquiteturas de CPU |
| META-INF/ | Metadados: certificados, listas de arquivos, hashes |
O manifesto é o arquivo de configuração central do aplicativo. Em formato binário compilado (não XML legível), contém o nome do pacote, versão, lista de atividades, serviços, permissões e requisitos de SDK. Sem manifesto, o sistema não sabe como executar o aplicativo.
O código fonte em Java ou Kotlin é compilado em arquivos DEX (Dalvik Executable). O arquivo principal é chamado classes.dex. Se o bytecode exceder o limite de 64K métodos, são criados classes2.dex, classes3.dex etc. — o mecanismo multidex.
O diretório lib/ contém bibliotecas C/C++ compiladas para diferentes arquiteturas: armeabi-v7a, arm64-v8a, x86, x86_64. Cada biblioteca tem extensão .so (Shared Object). Aplicativos modernos geralmente fornecem apenas arm64-v8a.
A compilação de APK é um processo de várias etapas automatizado pelo sistema de compilação Gradle e Android Gradle Plugin. Cada etapa transforma arquivos fonte em componentes do arquivo final.
O código fonte é compilado em bytecode Java (.class), depois convertido em DEX usando a ferramenta d8 (anteriormente dx). Os recursos são compilados em formato binário via AAPT2. Todos os componentes são empacotados em um arquivo ZIP e assinados com assinatura digital.
// build.gradle.kts — configuração básica de compilação de APK
android {
defaultConfig {
applicationId = "com.example.app"
minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0.0"
}
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt")
)
}
}
}
ProGuard ou R8 ofuscam o código, removem classes e métodos não utilizados, reduzindo o tamanho do APK. Sem ofuscação, o APK contém nomes de classe completos, o que simplifica a descompilação. R8 também realiza otimização de bytecode no nível DEX.
A assinatura digital é um elemento obrigatório do APK. Android não instala pacotes não assinados. A assinatura garante que o aplicativo não foi modificado após a publicação e determina a quem pertence o pacote.
v1 (JAR signing) é o esquema original baseado na assinatura de cada arquivo no pacote. Vulnerabilidade: arquivos podem ser removidos do META-INF sem detecção. v2 (APK Signature Scheme v2) apareceu no Android 7.0 — todo o pacote é assinado como um todo, impedindo modificações. v3 suporta rotação de chaves e v4 suporta instalação incremental.
Google Play exige v2 ou superior para todos os novos aplicativos desde agosto de 2021. Recomenda-se assinar o APK com todos os três esquemas para máxima compatibilidade com diferentes versões do Android.
No build.gradle são especificados o keystore, a senha e o alias. A chave privada é armazenada em um repositório criptografado. Para publicar no Google Play, usa-se o App Signing — o Google armazena a chave privada e o desenvolvedor envia o APK assinado.
A instalação de APK é realizada através do gerenciador de pacotes do sistema PackageManager. O processo inclui verificação de assinatura, análise do manifesto, cópia de arquivos e otimização de DEX via dex2oat.
A ferramenta ADB (Android Debug Bridge) permite instalar APK diretamente do computador do desenvolvedor. O comando `adb install app.apk` copia o arquivo para o dispositivo e inicia a instalação. A flag -r reinstala o aplicativo preservando os dados, a flag -d permite instalar uma versão com versionCode mais baixo.
A partir do Android 8.0, o sistema exige confirmação para instalação de fontes desconhecidas para cada aplicativo separadamente. Android 14 reforçou o controle: a instalação de APK através de lojas de terceiros só é possível após permissão explícita nas configurações. Google Play Protect verifica cada APK durante a instalação em busca de código malicioso.
Para aplicativos maiores que 150 MB, o Google Play suporta Expansion Files — pacotes OBB adicionais de até 2 GB cada. Os arquivos OBB não são incluídos no APK, mas baixados separadamente após a instalação. O formato suporta dois tipos: main (recursos base) e patch (atualizações).
// Verificação de versão do APK via PackageManager
val pm = packageManager
val info = pm.getPackageInfo(
"com.example.app",
PackageManager.GET_ACTIVITIES
)
Log.d("APK", "Version: ${info.versionName}")
Em dispositivos com ART (Android Runtime), após a instalação, a compilação de DEX em código nativo é iniciada via dex2oat. O processo pode levar alguns segundos e aumenta o tamanho do aplicativo instalado, mas acelera sua inicialização.
AAB (Android App Bundle) é um formato que o Google promove como alternativa ao APK para publicação no Google Play. A diferença é fundamental: AAB não é instalado diretamente, mas serve como contêiner a partir do qual o Google Play gera APKs otimizados.
| Parâmetro | APK | AAB |
|---|---|---|
| Tamanho de download | Arquivo completo | Apenas componentes necessários |
| Instalação direta | Sim | Não (geração de APK) |
| Distribuição | Qualquer canal | Google Play |
| Controle de versão | Versão no manifesto | Dynamic Delivery |
| Publicação | Google Play + terceiros | Google Play |
Google Play exige AAB desde agosto de 2021 para novos aplicativos. No entanto, o APK continua sendo o formato principal para distribuição fora do Google Play — através de sites, lojas corporativas e testes.
Desenvolvedores encontram regularmente problemas ao compilar e instalar APK. A maioria está relacionada a incompatibilidade de versões, assinatura ou estrutura do arquivo.
Este erro ocorre ao tentar instalar um APK com o mesmo nome de pacote, mas assinatura diferente. Android não permite reinstalar um aplicativo com certificado alterado. A solução é remover a versão antiga antes da instalação.
Se o projeto exceder o limite de 65536 métodos, a compilação falha com erro dex. A solução é habilitar multidex no build.gradle ou otimizar dependências removendo bibliotecas não utilizadas.
Google Play limita o tamanho do APK a 150 MB. Para aplicativos maiores, são usados APK Expansion Files (OBB). Recomenda-se reduzir o tamanho através de R8, imagens WebP e Android App Bundle. Cada megabyte extra afeta negativamente a conversão de instalação: segundo o Google, cada 10 MB reduzem a conversão em 1%.
APK pode ser descompilado com ferramentas como JADX, APKTool ou Bytecode Viewer. JADX restaura o código Java original do DEX, tornando aplicativos sem ofuscação completamente legíveis. Para proteção de código, usa-se ProGuard/R8, que renomeia classes, métodos e campos para nomes curtos ilegíveis e remove informações de depuração.
Para analisar o conteúdo do APK, são usados Android Studio Profiler, apkanalyzer (ferramenta CLI do Android SDK) e utilitários de terceiros. apkanalyzer mostra o tamanho de cada componente do APK: DEX, recursos, bibliotecas nativas e assinatura. A análise ajuda a identificar quais dependências ocupam mais espaço e tomar decisões sobre substituição ou remoção.
Perguntas frequentes
Sim, qualquer arquivador (7-Zip, WinRAR) abre APK como ZIP. É possível visualizar o conteúdo, mas para descompilar o código são necessárias ferramentas especiais — JADX ou apktool.
XAPK é um formato não oficial usado por algumas lojas de terceiros. Ele combina APK com arquivos OBB adicionais em um só arquivo. Google Play e documentação oficial do Android não usam XAPK.
Android Studio assina automaticamente a compilação de depuração com debug.keystore ao executar em um dispositivo. Para distribuir uma versão de teste à equipe, é necessária assinatura com chave de lançamento ou uso de App Signing.
Use R8 para ofuscação e minificação, converta imagens para WebP, remova recursos não utilizados via Lint e, para projetos grandes, migre para Android App Bundle com Dynamic Delivery.
Não — qualquer modificação no APK após a assinatura quebra a assinatura digital. Para atualizar, é necessário compilar e assinar uma nova versão com versionCode incrementado.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também