Comunidade

Google Play 'assinado com a chave errada' - por que isso acontece e como detectá-lo em dois segundos

O erro 'signed with the wrong key' no Google Play ocorre quando o APK/AAB é assinado com uma chave diferente da registrada. Para evitar, use ferramentas como siglock ou comparações manuais de certificados para verificar a integridade antes do upload.

Compartilhar
Google Play "signed with the wrong key" - why it happens and how to catch it in 2 seconds - DEV Community

Você constrói seu pacote AAB de lançamento, o envia para o Google Play e depois do fluxo completo de construção + upload você recebe:

Seu Android App Bundle está assinado com a chave errada. Certifique-se de que seu App Bundle foi assinado com a chave correta e tente novamente.

A construção estava boa. O código estava bom. A assinatura não estava. E o Google só te avisa no final — depois da construção, do download e do upload no console do Play. Em pipelines de CI (EAS, Bitrise, GitHub Actions), esse erro pode custar uma hora ou mais.

Por que isso acontece

O Google Play associa permanentemente seu aplicativo com o certificado da sua chave de upload. Cada lançamento deve ser assinado com essa chave exata. O erro significa que seu artefato foi assinado com algo diferente. Os suspeitos habituais:

  • A keystore de debug — o tipo de build de lançamento não está configurado para signingConfigs.release em android/app/build.gradle, então o Gradle cai silenciosamente na assinatura de debug
  • A keystore local de um colega de equipe — todos da equipe têm sua própria "keystore" de lançamento e elas não correspondem
  • Uma nova keystore gerada — a original foi perdida, alguém criou uma nova com o mesmo alias e assumiu que funcionaria (isso não vai; o impressão digital é diferente)
  • Divergência de credenciais do CI — a keystore armazenada nos segredos do seu CI não é a esperada pelo Play

Diagnosticando manualmente

A JDK's keytool pode imprimir o certificado de assinatura de qualquer APK/AAB assinado:

keytool -printcert -jarfile app-release.aab
Entrar no modo de tela cheia Sair do modo de tela cheia

Compare a SHA1 com Play Console → Configuração → Assinatura do aplicativo → Certificado da chave de upload. Se a linha Owner diz CN=Android Debug, seu artefato está assinado em modo debug. Se as impressões digitais simplesmente diferem, você assinou com a keystore errada — encontre a correta e ajuste sua configuração de assinatura.

Se você perdeu realmente a keystore original, o console do Play permite que você solicite um redefinição da chave de upload (Configuração → Assinatura do aplicativo), o que leva alguns dias.

Detectando antes do upload

A comparação manual de impressões digitais funciona, mas ninguém faz isso em cada lançamento. Eu bati nesta mensagem de erro uma vez demais, então construí siglock — um pequeno CLI licenciado sob MIT que transforma a comparação em um teste de dois segundos.

Bloqueie sua assinatura conhecida boa uma vez (de um artefato aceito pelo Play, ou diretamente da sua keystore):

npx siglock init app-release.aab

Esse comando escreve um .siglock.json com os impressos dos certificados. São dados públicos — os mesmos valores mostrados no Play Console —, então você pode fazer o commit do arquivo e toda a equipe verifica contra a mesma chave.

Ao antes de cada upload:

npx siglock check app-release.aab
  • ✅ Correspondência → ✓ Assinatura corresponde, pronto para upload. e código de saída 0
  • ❌ Divergência → impressões digitais esperadas vs. encontradas e código de saída 1
  • ⚠️ Keystore de depuração → um aviso explícito que a compilação não pode ir para produção

O código de saída diferente de zero significa que você pode inseri-lo em CI e uma compilação assinada incorretamente falha na pipeline ao invés de chegar no Play Console:

- name: Verificar assinatura de release
  run: npx siglock check android/app/build/outputs/bundle/release/app-release.aab

Você também pode verificar contra uma impressão digital colada diretamente do Play Console, sem necessidade de um arquivo lock:

npx siglock check app-release.aab --expect "AA:BB:CC:..."

No fundo, ele apenas executa keytool (que todo desenvolvedor Android já tem), com um fallback para apksigner para APKs assinados apenas com o esquema v2/v3.

Conclusão

"Chave errada" é uma categoria de erro que é integralmente evitável antes do upload — o Google simplesmente não verifica isso para você até a submissão. Seja usando siglock ou uma comparação manual com keytool, coloque uma verificação de assinatura na frente de cada upload no Play e este erro desaparecerá da sua vida.

GitHub · npm

Fonte original

Conteúdo traduzido e adaptado pela redação do Notícias Mobile. Confira também a matéria na fonte original.

Leia a matéria completa