Guia APK modding

Como assinar um APK (apksigner, jarsigner e MT Manager)

Aprenda a assinar arquivos APK com apksigner, jarsigner ou MT Manager. Esquemas v1 a v4 explicados. Verifique e só então instale.

Sumário

Assinar um APK significa carimbar o pacote com a sua chave criptográfica para que o Android possa verificar quem o construiu e que ninguém o alterou depois. Use o apksigner do SDK build tools, o menu de assinatura do MT Manager ou a etapa de rebuild do APK Editor e, em seguida, confira o certificado antes de instalar. Assine somente pacotes que você possui ou reconstruiu você mesmo, e guarde o keystore como se fosse uma senha.

Parte do hub de modding: Como modar um APK · Veio de: Recompilar um APK · Conferir: Como verificar a assinatura de um APK.

Por Abdul Emam, testador de APKs da ApkZena. Já assinei três builds de teste com três chaves diferentes numa tarde só, e nenhuma atualizava sobre a outra. Um keystore por projeto, com backup em dois lugares, acabou com aquela bagunça. Uma chave. Dois backups.

Este guia cobre o que é assinar, os quatro esquemas de assinatura, a criação do keystore, as três rotas de assinatura, os erros que você vai encontrar e a verificação. Cada comando aparece exatamente como foi digitado.

O que é assinar um APK?

Assinar um APK anexa uma assinatura criptográfica criada com uma chave de assinatura, permitindo que o Android verifique a integridade do pacote e compare a identidade da atualização; o Android confere essa assinatura durante a instalação e as atualizações, e rejeita uma atualização assinada com uma chave incompatível para o mesmo pacote.

Por que o Android exige assinatura

Sem assinaturas, qualquer arquivo reempacotado poderia trocar silenciosamente o seu app bancário numa atualização. A assinatura amarra as atualizações ao autor original, e é exatamente por isso que o seu rebuild modificado nunca pode atualizar por cima da versão da loja: chave diferente, identidade diferente.

Assinatura de debug versus release

Chaves de debug são geradas automaticamente em cada máquina de desenvolvimento e nunca devem sair da sua mesa. Chaves de release vivem no seu keystore e definem a identidade permanente do app ao longo de anos de atualizações. Trocar as duas produz builds que instalam de boa e depois deixam seus usuários na mão.

Esquemas de assinatura de APK

A assinatura de APK no Android inclui os esquemas v1, v2, v3 e v4, com papéis diferentes de compatibilidade e de entrega; saber quais esquemas a sua ferramenta de build aplica ajuda você a checar os requisitos de suporte do aparelho sem mudar opções de assinatura sem necessidade numa build local ou teste.

v1 (assinatura JAR)

Assina cada entrada ZIP individualmente, o esquema Java original herdado pelo Android. Lento para verificar em pacotos grandes e cego para adulterações no nível do ZIP, mas ainda exigido em aparelhos anteriores ao Android 7. Mantenha-o para máxima compatibilidade.

v2 (APK Signature Scheme v2)

Assina o APK inteiro como um bloco, verificando em uma passagem durante a instalação. Mais rápido e mais forte que o v1, obrigatório em alvos modernos e documentado na referência APK Signature Scheme do Google. Este é o esquema que faz o trabalho de verdade hoje.

v3 (rotação de chaves)

Estende o v2 com prova assinada da linhagem da chave, para que um desenvolvedor migre para uma chave nova sem abandonar os usuários existentes. Importa para apps de longa duração e migrações para o Play App Signing. Irrelevante para builds mods pessoais, conhecimento essencial para desenvolvedores.

v4 (entrega incremental)

Suporta instalações em streaming, em que a verificação acontece conforme os bytes chegam, e não depois do download completo. Ligado a mecanismos de entrega mais novos e invisível em fluxos de modding manual. Saiba que ele existe; você raramente o invocará direto.

Quais esquemas usar

Publique v1 e v2 para builds instalados fora da loja: o v1 cobre aparelhos antigos, o v2 cobre todo o resto e carrega o peso da segurança. Some v3 apenas quando planejar rotação de chaves. O apksigner habilita a combinação certa por padrão para a sua configuração de SDK mínimo.

Como gerar um keystore

O comando keytool cria o keystore e a identidade de assinatura usada pelas builds futuras; proteja tanto o arquivo quanto as senhas dele, porque perder a chave pode impedir atualizações de pacotes que dependem dela nas próximas versões e nas instalações nos aparelhos dos usuários.

O comando keytool

keytool -genkeypair -v -keystore my.keystore -alias mykey -keyalg RSA -keysize 2048 -validity 10000

Responda as perguntas com sinceridade, defina senhas fortes para o store e para a key, e confirme que o arquivo apareceu. A documentação de assinatura de apps do SDK percorre cada flag e o motivo de cada escolha.

Faça o backup do keystore

Copie o arquivo para dois lugares independentes antes de assinar qualquer coisa com ele: um pen drive criptografado e um arquivo offline, por exemplo. Um keystore com uma cópia só é um keystore que você já perdeu pela metade, já que quase ninguém toca nele até o dia da tragédia.

Como assinar com o apksigner

O apksigner assina APKs, verifica os certificados deles e relata os esquemas de assinatura suportados; ele vem com o Android SDK build tools, o que o torna a opção de linha de comando preferida para pacotes Android modernos que exigem esquemas além do v1 para instalar em aparelhos Android atuais.

Assine o pacote

apksigner sign --ks my.keystore --out signed.apk unsigned.apk

Digite a senha do keystore quando solicitado. A flag --out preserva o seu arquivo de entrada sem assinatura, o que mantém um par limpo de antes e depois para depurar problemas de assinatura depois.

Verifique a assinatura

apksigner verify --print-certs signed.apk

Confirme que a saída cita o seu certificado e lista os esquemas esperados. A verificação leva segundos e pega falhas silenciosas, como uma build que instalou do cache enquanto a assinatura na verdade falhou — erros que custam horas quando você pula a checagem.

Como assinar com o jarsigner

O jarsigner é um utilitário do JDK que aplica assinaturas JAR v1 em APKs, principalmente para fluxos antigos; ele não cria esquemas de assinatura de APK mais novos, então use o apksigner quando for necessária compatibilidade com aparelhos Android modernos para instalação e atualização nas versões suportadas.

Alinhe e depois assine

zipalign -p 4 unsigned.apk aligned.apk
jarsigner -keystore my.keystore aligned.apk mykey

O alinhamento precisa vir antes da assinatura v1 porque ele reorganiza os bytes que a assinatura cobre. Depois verifique com jarsigner -verify -verbose -certs e prefira o apksigner como palavra final para os esquemas modernos.

Como assinar com o MT Manager

O MT Manager pode assinar pelo menu de APK no celular: selecione o arquivo, escolha a ação de assinatura e use a chave padrão dele ou um keystore configurado; mantenha a chave consistente se builds seguintes precisarem atualizar este pacote.

Chave padrão versus o seu keystore

A chave padrão serve para experimentos descartáveis, mas builds que precisam se atualizar entre sessões exigem o seu keystore estável. Configure-o uma vez nas configurações do MT Manager e todo rebuild carrega automaticamente a mesma identidade.

Como assinar com o Android Studio

O assistente Generate Signed Bundle or APK do Android Studio pode assinar uma build de release depois que você seleciona o módulo e o keystore; o signingConfigs do Gradle cuida das mesmas configurações em builds repetidas, quando você quer o processo automatizado a partir da configuração do seu projeto e do seu pipeline de CI.

Quando o assistente serve

A criação do keystore na primeira vez e releases avulsos se beneficiam do fluxo guiado e da validação de senhas dele. Builds de modding roteirizadas ou repetidas pertencem ao apksigner na linha de comando, onde o passo fica visível e versionado.

Erros de assinatura comuns

Keystores faltando, assinaturas de atualização incompatíveis, divergências na verificação e saídas sem assinatura são falhas comuns de assinatura; identifique primeiro a mensagem exata, porque cada uma aponta para uma chave, um arquivo de entrada ou um passo do fluxo diferente para investigar antes de rebuildar o pacote de novo para instalação.

Keystore não encontrado

O caminho está errado, o arquivo mudou de lugar ou você digitou o alias errado. Confira o caminho de novo no seu gerenciador de arquivos, confirme o alias com keytool -list e mantenha os keystores numa pasta fixa para isso nunca mais acontecer.

INSTALL_FAILED_UPDATE_INCOMPATIBLE

O aparelho guarda o mesmo pacote sob outra chave. Desinstale o app existente, aceite a perda dos dados locais e instale a sua build do zero. Nenhuma flag nem truque contorna isso: é o sistema de assinatura funcionando como projetado.

Assinatura divergente na verificação

O apksigner verify falha ou mostra um certificado inesperado. Você assinou com o keystore errado, assinou um arquivo já assinado com configurações conflitantes, ou verificou a entrada sem assinatura por engano. Assine de novo o arquivo certo com a chave certa.

Pacote sem assinatura recusado

O instalador rejeita o arquivo antes de qualquer lógica de assinatura rodar. A etapa de assinatura foi pulada, geralmente porque uma ferramenta rebuildou sem a passagem de assinatura habilitada. Assine na mão e verifique antes de voltar para o instalador.

Keystore errado, senha certa

A assinatura funciona, mas a verificação mostra o certificado de um estranho: você apontou para um keystore antigo ou emprestado. Builds assinadas com chaves diferentes nunca se atualizam por cima uma da outra, então pare e re-assine com a chave que detém a linhagem do app instalado antes de seguir em frente.

Disciplina de keystore para quem modifica

Para projetos de teste privados, mantenha uma chave com nome claro por linha de pacote e faça backups separados de cada keystore; nomes de arquivo com data e um registro de qual APK usa qual chave deixam as atualizações seguintes mais fáceis de gerenciar entre aparelhos e builds.

Nomeie as chaves por projeto

game-mod-2026.keystore diz para o seu eu do futuro exatamente o que ele assina. Nomes genéricos convidam à reutilização em builds sem relação, e builds sem relação que dividem a mesma chave herdam as restrições de atualização uma da outra. Clareza agora evita desinstalações depois.

Como verificar a assinatura de um APK

A verificação confere a saída assinada de forma independente antes da instalação, confirmando o certificado e os esquemas que você espera; use o guia de checagem de assinatura para ler as impressões digitais e compará-las com uma build oficial confiável do mesmo pacote.

Gere um keystore, faça o backup dele duas vezes e assine todo rebuild com a mesma chave. Quando a próxima build recusar instalar, o guia de recompilação e a solução de problemas de instalação no pilar de modding continuam de onde você parou.

Pontos principais

  • Assine todo rebuild com o seu próprio keystore; o Android não instala nada sem assinatura.
  • Publique assinaturas v1 e v2, adicione v3 quando a rotação de chave importar e sempre verifique depois de assinar.
  • Perder um keystore deixa a identidade do app órfã para sempre, então faça o backup duas vezes.

Perguntas frequentes

Como assino um APK?

Rode apksigner sign com o seu keystore sobre o pacote, ou use o menu de assinatura do MT Manager ou a etapa de rebuild do APK Editor. Depois verifique o certificado com apksigner verify antes de instalar. Um pacote sem assinatura ou assinado errado falha na instalação toda vez.

O que é o apksigner?

O apksigner é a ferramenta de assinatura oficial de linha de comando do Google, entregue com o Android SDK build tools. Ele aplica os esquemas de assinatura v1 a v4, verifica assinaturas existentes e rotaciona chaves no v3. Prefira-o ao jarsigner para qualquer coisa que mira versões modernas do Android.

O que é um keystore?

Um keystore é um arquivo criptografado que guarda a sua chave privada de assinatura e o seu certificado, protegidos por senhas definidas na criação. O Android confia na chave, não em você, então perder o keystore deixa para sempre todos os apps assinados com ele órfãos. Faça o backup em dois lugares.

O que são as assinaturas v1, v2, v3 e v4?

v1 assina cada entrada ZIP do jeito antigo de JAR; v2 assina o APK inteiro para verificação mais rápida e mais forte; v3 adiciona rotação de chaves para recuperação de perda de chave; v4 suporta entrega incremental. Builds modernas trazem v1 mais v2, com v3 quando a rotação importa.

Preciso rodar zipalign antes de assinar?

Sim, para pacotes só com v1: zipalign primeiro, depois assine, porque o alinhamento muda bytes que a assinatura v1 cobre. Com v2 e mais novos, o apksigner cuida do alinhamento sozinho e avisa quando precisa ajustar. Na dúvida, alinhe primeiro; a ordem nunca atrapalha.

Posso assinar um APK sem o Android Studio?

Sim. O apksigner roda sozinho a partir da pasta SDK build-tools, sem IDE nenhuma, e o MT Manager assina no próprio celular. O Android Studio apenas empacota as mesmas operações num assistente. Assinar na linha de comando é o padrão em fluxos de modding.

Como conserto uma assinatura divergente?

Desinstale o app que carrega a outra assinatura e instale a sua build do zero, aceitando que os dados locais vão embora com a desinstalação. Divergências não se consertam com truques de reassinatura: duas chaves diferentes nunca se atualizam por cima uma da outra, por projeto do Android.

Qual é a diferença entre assinatura de debug e de release?

Builds de debug usam uma chave gerada automaticamente em cada máquina de desenvolvedor, boa para testes e nunca para distribuição. Builds de release usam a chave do seu keystore privado, que define a identidade permanente do app. Nunca publique nada assinado com chave de debug.

Posso usar um keystore para vários apps?

Sim. Um desenvolvedor pode usar um keystore em vários apps, embora perdê-lo ou expô-lo afete todos os pacotes que dependem daquela chave. Chaves separadas podem limitar esse impacto. Escolha o que escolher, faça o backup de cada keystore e anote qual chave assinou qual pacote.

O que acontece se eu perder meu keystore?

Você perde a capacidade de publicar atualizações para todo app assinado com ele, para sempre, sem caminho de recuperação junto ao Google para pacotes instalados fora da loja. Os usuários precisam desinstalar e reinstalar sob uma chave nova, perdendo dados locais. É por isso que o backup do keystore supera qualquer outra precaução.

Parte do guia completo

Como modificar APK de jogos: métodos, ferramentas e riscos

Também em APK modding: