Version Code é um número inteiro positivo no desenvolvimento Android que identifica exclusivamente cada nova compilação do aplicativo. O Google Play e o sistema Android usam o Version Code para determinar se uma atualização é necessária: se o código da nova compilação for maior que o instalado, o processo de atualização é iniciado. De acordo com a Documentação para Desenvolvedores Android, o Version Code não é mostrado ao usuário e serve exclusivamente para numeração interna de versões.
Pontos principais
Version Code é um número inteiro do tipo Integer atribuído a cada compilação de um aplicativo Android. Ao contrário do Version Name, o Version Code não é exibido ao usuário e é usado exclusivamente pelo sistema operacional e pelo Google Play para comparar versões ao instalar atualizações.
Version Code deve ser um número inteiro positivo no intervalo de 1 a 2100000000. Cada compilação subsequente deve ter um Version Code estritamente maior que o anterior. Se um desenvolvedor publicou uma compilação com Version Code 5, a próxima publicação pode usar 6, 7 ou qualquer número maior que 5, mas não 4 nem 5 novamente.
O Google introduziu a separação entre Version Code e Version Name com o lançamento do Android SDK em 2007. O Version Code foi concebido como um identificador de máquina para comparação automática de versões, enquanto o Version Name foi criado como um rótulo legível por humanos. Essa separação permite que o desenvolvedor nomeie a versão como desejar, mantendo uma ordem estrita de atualizações através do código numérico.
| Parâmetro | Version Code | Version Name |
|---|---|---|
| Tipo de dado | Integer | String |
| Exibição ao usuário | Não | Sim |
| Comparação de versões | Comparação numérica | Não usada |
| Formato | 1, 2, 3, 10, 100 | 1.0.0, 2.3.1-rc |
| Intervalo | 1 — 2100000000 | Sem limites |
O mecanismo de comparação do Version Code está integrado ao sistema operacional Android e à Google Play Store. A cada publicação, o Google Play verifica se o Version Code da nova compilação é maior que o código da versão instalada. Se a condição não for atendida, a publicação é rejeitada com um erro.
Quando um dispositivo contata o Google Play para verificar atualizações, o servidor compara o Version Code do aplicativo instalado com o máximo disponível na loja. Se o código no servidor for maior, o download e a instalação da atualização são iniciados. O usuário vê o Version Name especificado pelo desenvolvedor, mas a decisão de atualização é tomada com base no Version Code.
Os desenvolvedores aplicam diferentes estratégias para incrementar o Version Code. A mais simples é aumentar em 1 a cada compilação. Para pipelines CI/CD, frequentemente é usado um timestamp ou número de compilação: 2026070301 (ano-mês-dia-número). É importante que o código aumente monotonicamente e não se repita entre diferentes compilações e canais do Google Play.
Version Code e Version Name são dois campos independentes no build.gradle que desempenham funções diferentes. O Version Code é um identificador interno para o sistema, o Version Name é um rótulo de marketing para o usuário. Eles podem mudar independentemente um do outro.
Version Name é uma string exibida nas configurações do aplicativo, no Google Play e nos diálogos de atualização. O desenvolvedor pode especificar qualquer formato: 1.0.0, 2.3.1-beta, 3.0-rc1. O Version Name não é usado para comparação de versões textuais — o Google Play sempre depende do Version Code.
É possível uma situação onde o Version Code aumenta enquanto o Version Name permanece o mesmo. Por exemplo, se um desenvolvedor corrige um bug crítico em uma compilação hotfix sem alterar a funcionalidade. O Version Name permanece 2.0.0, enquanto o Version Code muda de 5 para 6. O Google Play lidará corretamente com essa atualização.
// Exemplo: o version name não muda, o código aumenta
android {
defaultConfig {
versionCode 6 // Era 5 — hotfix sem novas funcionalidades
versionName "2.0.0" // Não mudou
}
}
// Verificação de versões em runtime
val code = BuildConfig.VERSION_CODE
val name = BuildConfig.VERSION_NAME
println("Code: $code, Name: $name")
A configuração do Version Code é feita no arquivo build.gradle do módulo do aplicativo. O campo versionCode aceita um número inteiro e faz parte do bloco defaultConfig. Para diferentes compilações de flavors, valores personalizados podem ser definidos através do campo versionCode na configuração do produto.
// build.gradle.kts — Kotlin DSL
android {
defaultConfig {
applicationId "com.example.app"
versionCode 15
versionName "2.1.0"
}
flavorDimensions +"version"
productFlavors {
create("demo") {
versionCode 1015
}
create("full") {
versionCode 2015
}
}
}
Os Product flavors permitem usar diferentes Version Codes para configurações distintas: versão demo, versão separada para tablets. Se flavors forem usados no projeto, o Version Code final é composto pelo número base e pelo incremento específico do flavor. O Google Play rastreia cada combinação independentemente.
Em pipelines CI/CD (GitHub Actions, GitLab CI, Jenkins), o Version Code é frequentemente gerado automaticamente com base no número de compilação ou data. Isso elimina o erro humano durante atualizações manuais. O script lê o Version Code atual do build.gradle, o incrementa e o escreve de volta antes de iniciar a compilação.
// Incremento automático do Version Code
import java.util.Properties
import java.io.FileInputStream
val versionProps = Properties()
versionProps.load(FileInputStream("version.properties"))
val versionCode = versionProps.getProperty("VERSION_CODE").toInt() + 1
versionProps.setProperty("VERSION_CODE", versionCode.toString())
android {
defaultConfig {
versionCode = versionCode
}
}
Google Play tem regras rigorosas para o Version Code ao publicar e atualizar aplicativos. Violar essas regras leva à rejeição da compilação ou à impossibilidade de lançar uma atualização. O desenvolvedor precisa entender as limitações e estratégias de gerenciamento de código em todas as etapas do ciclo de vida.
Google Play não permite o upload de um APK ou AAB cujo Version Code seja menor ou igual ao atualmente publicado. Esta regra se aplica a cada canal (production, beta, alpha) independentemente. Se uma compilação com Version Code 10 foi enviada para production e uma com código 5 está em alpha, o canal alpha pode ser atualizado para 6, 7, 8 ou 9, mas production permanece em 10.
Ao promover uma compilação de alpha para beta e depois para production, o Version Code deve aumentar em cada etapa. Se a versão alpha tem código 10, beta pode usar 11 e production 12. Você não pode lançar em production uma compilação com código 10 se alpha já está usando 10, mesmo que production ainda não o tenha visto.
O erro mais comum é a correspondência do Version Code em diferentes compilações enviadas ao mesmo canal. O Google Play retorna o erro APK_VERSION_CODE_ALREADY_EXISTS. Outro erro é exceder o valor máximo de 2100000000, o que causa uma falha de compilação. Para evitar conflitos, use a geração automática de código em seu sistema CI vinculada ao número de compilação ou data de compilação.
Os desenvolvedores também costumam cometer o erro de não incrementar o Version Code ao compilar uma hotfix para um canal alternativo. Se production tem código 15 e o canal alpha ficou em 14, ao promover alpha para production, o Google Play rejeitará a compilação porque seu código é menor que o código atual de production. Monitore a monotonicidade do código em todos os canais simultaneamente — para isso, é conveniente usar um único arquivo version.properties do qual todos os canais leem o valor atual.
Perguntas frequentes
Não, o Google Play não permite o upload de uma compilação com Version Code menor ou igual ao atualmente publicado no mesmo canal. O sistema verifica o código no upload e retorna um erro se a regra de incremento monotônico for violada. Para os canais alfa e beta, o mesmo princípio se aplica independentemente.
Para a primeira publicação, você pode especificar Version Code 1. O Google Play não define um limite mínimo além de um número inteiro positivo. Recomenda-se começar com 1 e incrementar em 1 a cada compilação subsequente. Se você usar o formato timestamp, a primeira compilação pode ser 20260701.
Version Code é um identificador interno de máquina usado pelo sistema para comparação. Version Name é um rótulo voltado ao usuário exibido no Google Play e no dispositivo. O usuário vê o Version Name (por exemplo, 2.0.0), enquanto o Google Play usa o Version Code para determinar se uma atualização é necessária.
O valor máximo do Version Code é 2100000000 (Integer.MAX_VALUE). Se excedido, o compilador retornará um erro porque o campo é do tipo int. Para projetos com um grande número de compilações (CI/CD com lançamentos diários), recomenda-se usar o formato timestamp ou redefinir o contador no início de uma versão major.
Version Code não é usado diretamente para testes A/B, mas indiretamente os afeta. O Google Play permite configurar a distribuição gradual (staged rollout) por porcentagem de usuários para uma compilação específica. O Version Code identifica a compilação, enquanto os testes A/B são configurados através do Firebase Remote Config ou serviços similares.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também