Version Code — egy pozitív egész szám az Android fejlesztésben, amely egyedileg azonosítja az alkalmazás minden új buildjét. A Google Play és az Android rendszer a Version Code segítségével határozza meg a frissítés szükségességét: ha az új build kódja nagyobb, mint a telepítetté, elindul a frissítési folyamat. A Android Developer Documentation szerint a Version Code nem jelenik meg a felhasználó számára, és kizárólag a verziók belső számozására szolgál.
Főbb pontok
Version Code — egy Integer típusú egész szám, amelyet az Android alkalmazás minden buildjéhez hozzárendelnek. A Version Name-től eltérően a Version Code nem jelenik meg a felhasználó számára, és kizárólag az operációs rendszer és a Google Play használja a verziók összehasonlítására a frissítések telepítésekor.
Version Code egy pozitív egész szám kell, hogy legyen 1 és 2100000000 közötti tartományban. Minden következő buildnek szigorúan nagyobb Version Code-dal kell rendelkeznie, mint az előző. Ha a fejlesztő kiadott egy buildet Version Code 5-tel, a következő közzététel használhat 6-ot, 7-et vagy bármilyen 5-nél nagyobb számot, de nem 4-et és nem ismét 5-öt.
A Google 2007-ben, az Android SDK megjelenésével vezette be a Version Code és Version Name közötti felosztást. Version Code a verziók automatikus összehasonlítására szolgáló gépi azonosítóként lett kialakítva, míg a Version Name — ember által olvasható címkeként. Ez a szétválasztás lehetővé teszi a fejlesztő számára, hogy tetszőlegesen nevezze el a verziót, miközben a numerikus kódon keresztül szigorú frissítési sorrendet tart fenn.
| Paraméter | Version Code | Version Name |
|---|---|---|
| Adattípus | Integer | String |
| Megjelenítés a felhasználónak | Nem | Igen |
| Verziók összehasonlítása | Számítógépes összehasonlítás | Nem használatos |
| Formátum | 1, 2, 3, 10, 100 | 1.0.0, 2.3.1-rc |
| Tartomány | 1 — 2100000000 | Korlátozás nélkül |
A Version Code összehasonlító mechanizmusa be van építve az Android operációs rendszerbe és a Google Play áruházba. Minden közzétételkor a Google Play ellenőrzi, hogy az új build Version Code-ja nagyobb-e, mint a telepített verzió kódja. Ha a feltétel nem teljesül, a közzététel hibával elutasításra kerül.
Amikor az eszköz kapcsolatba lép a Google Play-lel a frissítések ellenőrzése érdekében, a szerver összehasonlítja a telepített alkalmazás Version Code-ját az áruházban elérhető maximummal. Ha a szerveren lévő kód nagyobb — elindul a frissítés letöltése és telepítése. A felhasználó látja a fejlesztő által megadott Version Name-t, de a frissítésről szóló döntés a Version Code alapján történik.
A fejlesztők különböző stratégiákat alkalmaznak a Version Code növelésére. A legegyszerűbb — minden buildnél 1-gyel történő növelés. CI/CD folyamatokhoz gyakran használnak timestamp-et vagy build számot: 2026070301 (év-hónap-nap-szám). Fontos, hogy a kód monoton növekedjen és ne ismétlődjön meg különböző build-ek és Google Play track-ek között.
Version Code és Version Name — két független mező a build.gradle-ben, amelyek különböző funkciókat látnak el. A Version Code a rendszer számára szolgáló belső azonosító, a Version Name a felhasználó számára készült marketing címke. Egymástól függetlenül változhatnak.
Version Name — egy karaktersorozat, amely az alkalmazás beállításaiban, a Google Play-ben és a frissítési párbeszédablakokban jelenik meg. A fejlesztő bármilyen formátumot megadhat: 1.0.0, 2.3.1-beta, 3.0-rc1. A szöveges verziók összehasonlítására a Version Name nem használatos — a Google Play mindig a Version Code-ra támaszkodik.
Lehetséges az a helyzet, amikor a Version Code nő, de a Version Name változatlan marad. Például, ha a fejlesztő egy kritikus hibát javít egy hotfix buildben anélkül, hogy megváltoztatná a funkcionalitást. A Version Name 2.0.0 marad, a Version Code pedig 5-ről 6-ra változik. A Google Play helyesen kezeli az ilyen frissítést.
// Példa: version name nem változik, code nő
android {
defaultConfig {
versionCode 6 // 5 volt — hotfix új funkciók nélkül
versionName "2.0.0" // Nem változott
}
}
// Verziók ellenőrzése runtime-ban
val code = BuildConfig.VERSION_CODE
val name = BuildConfig.VERSION_NAME
println("Kód: $code, Név: $name")
A Version Code beállítása az alkalmazás modul build.gradle fájljában történik. A versionCode mező egész számot fogad el és a defaultConfig blokkban található. Különböző flavour build-ekhez saját értékek állíthatók be a versionCode mezőn keresztül a termékkonfigurációban.
// 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 lehetővé teszik különböző Version Code használatát különböző konfigurációkhoz: demo verzió, külön verzió tabletekhez. Ha a projektben flavors-t használnak, a végső Version Code az alapszámból és a flavour-specifikus növekményből áll. A Google Play minden kombinációt függetlenül követ nyomon.
A CI/CD folyamatokban (GitHub Actions, GitLab CI, Jenkins) a Version Code gyakran automatikusan generálódik a build szám vagy dátum alapján. Ez kiküszöböli az emberi hibákat a kézi frissítésnél. A szkript beolvassa az aktuális Version Code-ot a build.gradle-ből, megnöveli, és visszaírja a build megkezdése előtt.
// A Version Code automatikus növelése
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 szigorú szabályokkal rendelkezik a Version Code-ra vonatkozóan az alkalmazások közzététele és frissítése során. E szabályok megsértése a build elutasításához vagy a frissítés kiadásának képtelenségéhez vezet. A fejlesztőnek meg kell értenie a korlátozásokat és a kódkezelési stratégiákat az életciklus minden szakaszaiban.
Google Play nem teszi lehetővé olyan APK vagy AAB feltöltését, amelynek Version Code-ja kisebb vagy egyenlő, mint a jelenleg közzétett. Ez a szabály minden track-re (production, beta, alpha) függetlenül érvényes. Ha a production track-be feltöltöttek egy buildet Version Code 10-zel, és az alpha track-ben 5-ös kód van, az alpha track frissíthető 6-ra, 7-re, 8-ra vagy 9-re, de a production 10-en marad.
A build alpha-ból bétába, majd production-be történő promoválásakor a Version Code-nak minden szakaszban növekednie kell. Ha az alpha verzió 10-es kóddal rendelkezik, a béta használhat 11-et, a production pedig 12-t. Nem lehet production-be küldeni egy buildet 10-es kóddal, ha az alpha már használja a 10-et, még akkor sem, ha a production még nem látta.
A leggyakoribb hiba — a Version Code egyezése különböző, egy track-be feltöltött build-ekben. A Google Play az APK_VERSION_CODE_ALREADY_EXISTS hibát adja vissza. Másik hiba — a maximális 2100000000 érték túllépése, ami fordítási hibához vezet. Az ütközések elkerülése érdekében használjon automatikus kódgenerálást a CI rendszerben, a build számhoz vagy dátumhoz kötve.
A fejlesztők gyakran elkövetik azt a hibát is, hogy nem növelik a Version Code-ot egy alternatív track-hez készülő hotfix buildnél. Ha a production kódja 15, és az alpha track 14-en maradt, az alpha production-be történő promoválásakor a Google Play elutasítja a buildet, mert a kódja kisebb, mint a jelenlegi production. Kövesse nyomon a kód monotonitását az összes track-ben egyszerre — ehhez használjon egyetlen version.properties fájlt, amelyből az összes track olvassa az aktuális értéket.
Gyakran Ismételt Kérdések
Nem, a Google Play nem teszi lehetővé olyan build feltöltését, amelynek Version Code-ja kisebb vagy egyenlő, mint a jelenleg közzétett ugyanabban a track-ben. A rendszer feltöltéskor ellenőrzi a kódot, és hibát ad vissza, ha a monoton növekedés szabálya sérül. Az alfa és béta track-ekre ugyanez az elv vonatkozik függetlenül.
Az első közzétételhez megadhat Version Code 1-et. A Google Play nem állít be minimális küszöböt a pozitív egész számon kívül. Javasolt 1-gyel kezdeni és minden következő buildnél 1-gyel növelni. Ha timestamp formátumot használ, az első build lehet 20260701.
Version Code — belső gépi azonosító, amelyet a rendszer használ az összehasonlításhoz. Version Name — felhasználói címke, amely a Google Play-ben és az eszközön jelenik meg. A felhasználó a Version Name-t látja (például 2.0.0), a Google Play pedig a Version Code-ot használja a frissítés szükségességének meghatározásához.
A Version Code maximális értéke 2100000000 (Integer.MAX_VALUE). Túllépéskor a fordító hibát ad vissza, mert a mező típusa int. Nagyszámú build-del rendelkező projektek esetén (napi kiadásokkal CI/CD) javasolt a timestamp formátum használata vagy a számláló visszaállítása egy major verzió kezdetével.
Version Code közvetlenül nem használatos A/B tesztelésre, de közvetve befolyásolja azt. A Google Play lehetővé teszi a szakaszos bevezetés (staged rollout) beállítását a felhasználók százaléka alapján egy adott build esetében. A Version Code azonosítja a buildet, az A/B teszteket pedig Firebase Remote Config vagy hasonló szolgáltatások segítségével konfigurálják.
Összefoglaló
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is