APK: o que é, estrutura do arquivo e princípio de funcionamento

Autor: IT Sectr Publicado: 2026-04-15 Tempo de leitura: 8 min

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 é o formato de pacote de instalação do Android baseado em ZIP com bytecode DEX e recursos.
  • Estrutura inclui manifesto, arquivos DEX, recursos, bibliotecas de código nativo e certificados.
  • Assinatura é obrigatória: um APK não assinado não é instalado nos dispositivos.
  • Compilação é feita via Gradle: de Java/Kotlin a bytecode DEX compactado.
  • Lojas de terceiros e instalação direta de APK continuam em demanda fora do Google Play.

O que é APK e para que é usado

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.

História do formato

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.

Áreas de aplicação

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.

Estrutura interna do arquivo APK

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órioFinalidade
AndroidManifest.xmlManifesto do aplicativo: permissões, componentes, versão do SDK
classes.dexBytecode DEX compilado (pode haver vários arquivos)
resources.arscRecursos 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

AndroidManifest.xml

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.

Arquivos DEX

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.

Bibliotecas nativas

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.

Processo de compilação de APK via Gradle

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.

Etapas de compilação

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.

kotlin
// 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 e redução de tamanho

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.

Assinatura de APK: esquemas v1, v2, v3 e v4

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.

Evolução dos esquemas de assinatura

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.

Processo de assinatura via Gradle

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.

Instalação de APK em um dispositivo Android

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.

Instalação via ADB

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.

Segurança de instalação

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.

APK Expansion Files (OBB)

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).

kotlin
// 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}")

Otimização dex2oat

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.

APK vs AAB: qual formato escolher

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âmetroAPKAAB
Tamanho de downloadArquivo completoApenas componentes necessários
Instalação diretaSimNão (geração de APK)
DistribuiçãoQualquer canalGoogle Play
Controle de versãoVersão no manifestoDynamic Delivery
PublicaçãoGoogle Play + terceirosGoogle 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.

Problemas típicos com APK e suas soluções

Desenvolvedores encontram regularmente problemas ao compilar e instalar APK. A maioria está relacionada a incompatibilidade de versões, assinatura ou estrutura do arquivo.

INSTALL_FAILED_UPDATE_INCOMPATIBLE

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.

Limite de métodos excedido (65K)

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.

APK muito grande

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%.

Descompilação de APK e segurança

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.

Ferramentas de análise de APK

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

APK pode ser aberto como um arquivo ZIP comum?

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.

Como o APK difere do XAPK?

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.

Preciso assinar APK para testes?

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.

Como reduzir o tamanho do APK?

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.

APK pode ser modificado após a publicação?

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

  • APK é o formato de pacote de instalação do Android baseado em ZIP com assinatura digital obrigatória.
  • Estrutura inclui manifesto, bytecode DEX, recursos, bibliotecas nativas e certificados.
  • Compilação é realizada via Gradle com compilação para DEX usando a ferramenta d8.
  • Assinatura é obrigatória: esquemas v1, v2, v3 e v4 fornecem diferentes níveis de proteção.
  • Instalação é possível via Google Play, ADB, navegador e lojas corporativas.
  • AAB substitui APK no Google Play, mas APK continua sendo o padrão para distribuição de terceiros.
  • Limitações: limite de 150 MB para Google Play, 64K métodos sem multidex, assinatura obrigatória.

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.

Discutir o projeto

Leia também