Como gerar a chave de assinatura do aplicativo

Explicação e uso da chave de assinatura

A chave de assinatura (key) é uma chave digital usada para “assinar” o aplicativo Android antes de publicá-lo na Play Store. Essa assinatura identifica quem desenvolveu o app e garante que ele não foi alterado. A Play Store usa essa chave para verificar a autenticidade do app e permitir atualizações seguras, ou seja, só quem tem a mesma chave consegue publicar novas versões.

Quando um app é publicado, a Play Store passa a exigir que todas as versões futuras sejam assinadas com a mesma chave.
Se você tentar atualizar o aplicativo usando uma chave diferente, a atualização será rejeitada. Se a chave original for perdida ou você usar outra diferente, a Play Store não permitirá atualizar o aplicativo. Na prática, isso significa que você perde a capacidade de atualizar o app existente, sendo necessário publicar um novo aplicativo do zero.

Precauções

Antes de gerar, leve em conta alguns cuidados:

Localização dos arquivos de chaves de assinatura atuais

Atualmente, os arquivos estão commitados no repositório do Git Hub, mas na rede existe um caminho para acesso das chaves:

Z:\Programadores\Aplicativos\Keys Clubes

Geração da chave

A primeira coisa a ser feita durante a geração de chave de assinatura é saber onde deve ficar o arquivo .jks dela. No projeto do Clube, fica nesse caminho:

android/app/keyExemplo.jks

Além disso, você precisa de um arquivo key.properties para colocar informações da chave.

android/key.properties

Esse arquivo contém as informações da chave:

storePassword=clube,ki89ol.
keyPassword=clube,ki89ol.
keyAlias=nomedocliente
storeFile=key.jks

Feito isso, começam os comandos. O comando precisa ser executado pelo CMD ou terminal de dentro da pasta bin do Java, segue exemplo:

PS D:\Programacao\Mobile\app_market_clube> cd "C:\Program Files\Java\jdk-17.0.2\bin"

Após acessar a pasta bin do Java, execute esse comando:

.\keytool -genkey -v -keystore D:\Market\Key\keyExemplo.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias aliasExemplo

Lembre-se: Substituir o keyExemplo.jks por keyNomeDoCliente.jks e -alias aliasExemplo por -alias NomeDoCliente antes de executar o comando.

Após fazer isso, o terminal vai pedir validações, podem estar em português ou inglês, segue exemplo:

Enter keystore password:  
Re-enter new password: 
What is your first and last name?
  [Unknown]:  DevExemplo
What is the name of your organizational unit?
  [Unknown]:  Dev
What is the name of your organization?
  [Unknown]:  Market
What is the name of your City or Locality?
  [Unknown]:  CidadeExemplo
What is the name of your State or Province?
  [Unknown]:  EstadoExemplo
What is the two-letter country code for this unit?
  [Unknown]:  PaisExemplo
Is CN=DevExemplo, OU=Dev, O=Market, L=CidadeExemplo, ST=EstadoExemplo, C=PaisExemplo correct?
  [no]:  yes

Pode usar o seu nome e sobrenome, organizational unit (tipo de equipe) como Dev, organização como Market e a localização da empresa. Se estiver tudo correto ele irá gerar e pedir a senha da chave de assinatura:

Generating 2.048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10.000 days
        for: CN=DevExemplo, OU=Dev, O=Market, L=CidadeExemplo, ST=EstadoExemplo, C=PaisExemplo
Enter key password for <aliasExemplo>
        (RETURN if same as keystore password):
Re-enter new password:
[Storing D:\Market\Key\keyExemplo.jks]

A chave está feita! Agora pode porsseguir com a geração do aplicativo.

Obs: Caso a branch nova não traga algumas informações de release do gradle, você deve adicionar isso ao arquivo em /android/app/build.gradle:

Pesquise por 'android {' e substitua por isso:

def keystoreProperties = new Properties()
   def keystorePropertiesFile = rootProject.file('key.properties')
   if (keystorePropertiesFile.exists()) {
       keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
   }
   android {

Procure por isso:

buildTypes {
       release {
           // TODO: Add your own signing config for the release build.
           // Signing with the debug keys for now,
           // so `flutter run --release` works.
           signingConfig signingConfigs.debug
       }
   }

E substitua por isso:

signingConfigs {
       release {
           keyAlias keystoreProperties['keyAlias']
           keyPassword keystoreProperties['keyPassword']
           storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
           storePassword keystoreProperties['storePassword']
       }
   }
   buildTypes {
       release {
           signingConfig signingConfigs.release
       }
   }

Agora seu aplicativo está assinado e pronto para ser validado quanto a autenticidade da chave na loja de aplicativos!


Market Clube \ Publicação

Escrito por Gustavo e revisado por Luiz Filipe Schaeffer em 24/06/2026.


Link público: www.conhecimento.market.com.br/artigo/999