Assinatura do aplicativo
Chaves e assinatura de aplicativos no Play.
Assinatura do aplicativo é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.
Por que os aplicativos precisam ser assinados
O Android não instalará um aplicativo a menos que ele esteja assinado digitalmente. A assinatura comprova duas coisas: quem publicou o aplicativo e que o APK não foi adulterado desde então.
É importante entender que as assinaturas vinculam as atualizações ao aplicativo original. Uma atualização só é aceita se for assinada com a mesma chave da versão instalada. Se você perder essa chave, nunca mais poderá atualizar seu aplicativo.
Esta lição aborda keystores, configuração de assinatura e a abordagem moderna e mais segura do Google: a Play App Signing.
Keystores e chaves
Sua identidade de assinatura fica armazenada em um arquivo keystore (.jks ou .keystore). Um keystore pode conter várias chaves; cada chave tem um alias e sua própria senha.
- Senha do keystore — desbloqueia o arquivo.
- Alias da chave — identifica a chave dentro dele.
- Senha da chave — desbloqueia essa chave específica.
As compilações de depuração que você executa diariamente são assinadas automaticamente com um keystore de depuração descartável. Para a versão de lançamento, você precisa do seu próprio.
Criando um keystore
Você pode criar um keystore pela caixa de diálogo do Android Studio ou com o comando keytool, que acompanha o JDK.
Use uma validade longa (25 anos ou mais) — se a chave expirar, você não poderá publicar atualizações. RSA 2048 é o padrão.
keytool -genkeypair \
-v \
-keystore release.jks \
-alias upload \
-keyalg RSA \
-keysize 2048 \
-validity 10000O bloco signingConfigs
Para assinar automaticamente durante uma compilação do Gradle, declare uma entrada em signingConfigs e associe-a ao tipo de compilação release.
Isso funciona, mas observe que as senhas ficam visíveis no arquivo de compilação — corrigiremos isso a seguir.
android {
signingConfigs {
create("release") {
storeFile = file("release.jks")
storePassword = "superSecret"
keyAlias = "upload"
keyPassword = "superSecret"
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
}
}
}Mantenha os segredos fora do Git
Nunca envie senhas ou o keystore para o controle de versão. Em vez disso, leia-os de um arquivo local keystore.properties, ignorado pelo git.
Adicione keystore.properties e *.jks ao .gitignore.
// top of app/build.gradle.kts
val keystoreProps = Properties().apply {
val f = rootProject.file("keystore.properties")
if (f.exists()) load(f.inputStream())
}
android {
signingConfigs {
create("release") {
storeFile = file(keystoreProps["storeFile"] as String)
storePassword = keystoreProps["storePassword"] as String
keyAlias = keystoreProps["keyAlias"] as String
keyPassword = keystoreProps["keyPassword"] as String
}
}
}O arquivo keystore.properties
O arquivo de propriedades correspondente é uma lista simples de pares chave=valor, mantida fora do git e armazenada com segurança (em um gerenciador de senhas ou em um armazenamento de segredos de CI).
Em um servidor de CI, você injetaria esses valores como segredos provenientes do ambiente, em vez de usar um arquivo enviado ao repositório.
# keystore.properties (git-ignored!)
storeFile=release.jks
storePassword=superSecret
keyAlias=upload
keyPassword=superSecretPlay App Signing
Atualmente, o Play usa a Play App Signing. Nessa abordagem, o Google mantém a verdadeira chave de assinatura do aplicativo em sua infraestrutura segura e a utiliza para assinar os APKs entregues aos usuários.
Você gerencia apenas uma chave de envio: assina o pacote com ela e faz o envio. O Play verifica sua chave de envio, remove essa assinatura e assina novamente com a chave de assinatura do aplicativo.
A grande vantagem é que, se você perder a chave de envio, poderá solicitar uma redefinição — enquanto a chave de assinatura do aplicativo, aquela em que os usuários confiam, permanece protegida pelo Google.
Chave de envio x chave de assinatura do aplicativo
Duas chaves, duas funções — não as confunda:
- Chave de envio — é sua. Assina o AAB que você envia. Pode ser redefinida se for perdida.
- Chave de assinatura do aplicativo — é do Google (ou uma que você enviou uma única vez). Assina os APKs finais que os usuários instalam. É permanente.
Ao cadastrar um aplicativo novo, o caminho mais simples é deixar que o Google gere a chave de assinatura do aplicativo e assinar os envios com sua chave de envio.
Verificando uma assinatura
Para confirmar como um artefato foi assinado, use o apksigner das ferramentas de compilação do Android SDK. Ele informa o certificado de assinatura e quais esquemas de assinatura (v1/v2/v3) estão presentes.
Comparar a impressão digital SHA-256 do certificado também é a forma de registrar seu aplicativo em serviços como Firebase ou Google Sign-In.
# Verify and print signer certificates of an APK
apksigner verify --print-certs app-release.apk
# Show the SHA-256 fingerprint of a keystore key
keytool -list -v -keystore release.jks -alias uploadProtegendo suas chaves
Sua chave de envio é difícil de substituir e sua chave de assinatura do aplicativo, se for gerenciada por você, não pode ser substituída. Trate-as como joias da coroa:
- Faça backup do keystore em pelo menos dois locais seguros.
- Armazene as senhas em um gerenciador de senhas, nunca no código-fonte.
- Use a Play App Signing para que uma chave de envio perdida possa ser recuperada.
- Limite as pessoas da equipe que podem acessar o keystore.
Muitos aplicativos publicados foram abandonados simplesmente porque o desenvolvedor perdeu a chave e não pôde mais lançar atualizações.
Juntando tudo
O fluxo completo de assinatura de uma versão de lançamento é este:
- Crie um keystore de envio com
keytool. - Configure-o em
signingConfigs, lendo os segredos dekeystore.properties. - Compile um
.aabassinado com./gradlew bundleRelease. - Envie-o ao Play, que o assina novamente com a chave de assinatura do aplicativo antes de entregá-lo aos usuários.
A partir de agora, toda atualização deverá ser assinada com essa mesma chave de envio.
Verificação rápida
Com a Play App Signing ativada, qual chave você usa para assinar o pacote que envia e o que acontece se você a perder?
Recapitulação: assinatura do aplicativo
A assinatura é o que torna um aplicativo Android instalável e atualizável:
- Um keystore armazena chaves; cada chave tem um alias e senhas.
- Crie uma chave com validade longa usando
keytoole configure-a emsigningConfigs. - Mantenha as senhas fora do git usando
keystore.propertiese.gitignore. - A Play App Signing separa as chaves em sua chave de envio, que pode ser redefinida, e a chave de assinatura do aplicativo permanente do Google.
- Faça backup das chaves com cuidado — perder uma chave pode encerrar a vida de um aplicativo.
A seguir: configurando o Play Console e a página do seu aplicativo na loja.
Perguntas Frequentes
A aula “Assinatura do aplicativo” é grátis?
Sim — o texto completo de “Assinatura do aplicativo” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 4 aulas no total.
O que vou aprender em “Assinatura do aplicativo”?
Chaves e assinatura de aplicativos no Play. Você pratica Android Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Android Academy?
Nenhuma experiência prévia é necessária. Android Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Assinatura do aplicativo”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Android Academy?
Sim. Cada aula de Android Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Preparando uma compilação para lançamento
- Assinatura do aplicativo
- O Play Console e a página do aplicativo
- Lançamentos graduais e atualizações