Version Code — är ett positivt heltal i Android-utveckling som unikt identifierar varje ny byggnad av applikationen. Google Play och Android-systemet använder Version Code för att avgöra behovet av uppdatering: om koden för den nya byggnationen är större än den installerade, startas uppdateringsprocessen. Enligt Android Developer Documentation visas inte Version Code för användaren och tjänar enbart för intern versionsnumrering.
Huvudpunkter
Version Code — är ett heltal av typen Integer som tilldelas varje byggnad av Android-applikationen. Till skillnad från Version Name visas inte Version Code för användaren och används enbart av operativsystemet och Google Play för att jämföra versioner vid installation av uppdateringar.
Version Code måste vara ett positivt heltal inom intervallet 1 till 2100000000. Varje efterföljande byggnad måste ha en Version Code som är strikt större än den föregående. Om utvecklaren har publicerat en byggnad med Version Code 5, kan nästa publicering använda 6, 7 eller vilket tal som helst större än 5, men inte 4 och inte 5 igen.
Google införde uppdelningen i Version Code och Version Name med lanseringen av Android SDK 2007. Version Code utformades som en maskinidentifierare för automatisk versionsjämförelse, medan Version Name — som en människoläsbar etikett. Denna uppdelning gör det möjligt för utvecklaren att namnge versionen godtyckligt, samtidigt som en strikt uppdateringsordning bibehålls genom den numeriska koden.
| Parameter | Version Code | Version Name |
|---|---|---|
| Datatyp | Integer | String |
| Visning för användare | Nej | Ja |
| Versionsjämförelse | Numerisk jämförelse | Används inte |
| Format | 1, 2, 3, 10, 100 | 1.0.0, 2.3.1-rc |
| Intervall | 1 — 2100000000 | Utan begränsningar |
Jämförelsemekanismen för Version Code är inbyggd i Android-operativsystemet och Google Play-butiken. Vid varje publicering kontrollerar Google Play om Version Code för den nya byggnationen är större än koden för den installerade versionen. Om villkoret inte uppfylls avvisas publiceringen med ett fel.
När enheten kontaktar Google Play för att kontrollera uppdateringar, jämför servern Version Code för den installerade applikationen med den maximala tillgängliga i butiken. Om koden på servern är större — startas nedladdning och installation av uppdateringen. Användaren ser Version Name som angivits av utvecklaren, men beslutet om uppdatering fattas baserat på Version Code.
Utvecklare tillämpar olika strategier för att öka Version Code. Den enklaste är ökning med 1 vid varje byggnad. För CI/CD-pipelines används ofta timestamp eller byggnummer: 2026070301 (år-månad-dag-nummer). Det är viktigt att koden ökar monotont och inte upprepas mellan olika byggnader och Google Play-spår.
Version Code och Version Name — två oberoende fält i build.gradle som utför olika funktioner. Version Code är en intern identifierare för systemet, Version Name är en marknadsföringsetikett för användaren. De kan ändras oberoende av varandra.
Version Name — är en sträng som visas i applikationsinställningarna, i Google Play och i uppdateringsdialogrutor. Utvecklaren kan ange vilket format som helst: 1.0.0, 2.3.1-beta, 3.0-rc1. För att jämföra textversioner används inte Version Name — Google Play förlitar sig alltid på Version Code.
En situation är möjlig där Version Code ökar men Version Name förblir oförändrat. Till exempel, om utvecklaren reparerar ett kritiskt fel i en hotfix-byggnad utan att ändra funktionaliteten. Version Name förblir 2.0.0, och Version Code ändras från 5 till 6. Google Play kommer att hantera en sådan uppdatering korrekt.
// Exempel: version name ändras inte, code ökar
android {
defaultConfig {
versionCode 6 // Var 5 — hotfix utan nya funktioner
versionName "2.0.0" // Ändrades inte
}
}
// Kontroll av versioner i runtime
val code = BuildConfig.VERSION_CODE
val name = BuildConfig.VERSION_NAME
println("Kod: $code, Namn: $name")
Konfiguration av Version Code görs i filen build.gradle för applikationsmodulen. Fältet versionCode accepterar ett heltal och finns i blocket defaultConfig. För olika flavour-byggen kan egna värden ställas in via fältet versionCode i produktkonfigurationen.
// 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
}
}
}
Product flavors gör det möjligt att använda olika Version Code för olika konfigurationer: demoversion, separat version för surfplattor. Om flavors används i projektet består den slutliga Version Code av basnumret och den flavour-specifika ökningen. Google Play följer varje kombination oberoende.
I CI/CD-pipelines (GitHub Actions, GitLab CI, Jenkins) genereras Version Code ofta automatiskt baserat på byggnumret eller datumet. Detta eliminerar mänskliga fel vid manuell uppdatering. Skriptet läser aktuell Version Code från build.gradle, ökar den och skriver tillbaka den innan bygget påbörjas.
// Automatisk ökning av 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 har strikta regler för Version Code vid publicering och uppdatering av applikationer. Brott mot dessa regler leder till avvisning av bygget eller oförmåga att lansera en uppdatering. Utvecklaren måste förstå begränsningarna och strategierna för kodhantering i alla skeden av livscykeln.
Google Play tillåter inte uppladdning av APK eller AAB vars Version Code är mindre än eller lika med den för närvarande publicerade. Denna regel gäller för varje spår (production, beta, alpha) oberoende. Om en byggnad med Version Code 10 har laddats upp i production och i alpha med kod 5, kan alpha-spåret uppdateras till 6, 7, 8 eller 9, men production förblir på 10.
Vid befordran av en byggnad från alpha till beta och sedan till production måste Version Code öka i varje steg. Om alphaversionen har kod 10 kan beta använda 11 och production 12. Det går inte att rulla ut en byggnad med kod 10 till production om alpha redan använder 10, även om production ännu inte har sett den.
Det vanligaste felet — att Version Code sammanfaller i olika byggnader som laddats upp till ett spår. Google Play returnerar felet APK_VERSION_CODE_ALREADY_EXISTS. Ett annat fel — överskridande av maxvärdet 2100000000, vilket orsakar ett kompileringsfel. För att undvika konflikter, använd automatisk kodgenerering i CI-systemet kopplat till byggnumret eller byggdatumet.
Utvecklare gör också ofta misstaget att inte öka Version Code vid hotfix-byggnad för ett alternativt spår. Om production har kod 15 och alpha-spåret har stannat på 14, kommer Google Play vid befordran av alpha till production att avvisa bygget eftersom dess kod är mindre än den aktuella production. Övervaka monotoniteten hos koden i alla spår samtidigt — för detta är det praktiskt att använda en enda version.properties-fil som alla spår läser det aktuella värdet från.
Vanliga frågor
Nej, Google Play tillåter inte uppladdning av en byggnad med Version Code som är mindre än eller lika med den för närvarande publicerade i samma spår. Systemet kontrollerar koden vid uppladdning och returnerar ett fel om regeln om monoton ökning har överträtts. För alfa- och betaspår gäller samma princip oberoende.
För den första publiceringen kan du ange Version Code 1. Google Play sätter ingen minimitröskel förutom ett positivt heltal. Det rekommenderas att börja med 1 och öka med 1 vid varje efterföljande byggnad. Om du använder timestamp-format kan den första byggnationen vara 20260701.
Version Code — är en intern maskinidentifierare som används av systemet för jämförelse. Version Name — är en användaretikett som visas i Google Play och på enheten. Användaren ser Version Name (till exempel 2.0.0), och Google Play använder Version Code för att avgöra behovet av uppdatering.
Maxvärdet för Version Code är 2100000000 (Integer.MAX_VALUE). Vid överskridande kommer kompilatorn att returnera ett fel eftersom fältet är av typen int. För projekt med ett stort antal byggnader (CI/CD med dagliga utgåvor) rekommenderas att använda timestamp-format eller att återställa räknaren med början av en major-version.
Version Code används inte direkt för A/B-testning, men påverkar det indirekt. Google Play tillåter konfiguration av stegvis utrullning (staged rollout) baserat på procentandel användare för en specifik byggnad. Version Code identifierar byggnaden, och A/B-tester konfigureras via Firebase Remote Config eller liknande tjänster.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också