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.releaseemandroid/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
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.

