Version Code: шта је, бројчани идентификатор и ажурирања

Аутор: IT Sectr Објављено: 2026-04-17 Време читања: 8 мин

Version Code — је цео позитиван број у Android развоју који јединствено идентификује сваку нову изградњу апликације. Google Play и Android систем користе Version Code за одређивање потребе за ажурирање: ако је код нове изградње већи од инсталиране, покреће се процес ажурирања. Према Android Developer Documentation, Version Code се не приказује кориснику и служи искључиво за унутрашњу нумерацију верзија.

Главно

  • Version Code — бројчани идентификатор изградње Android апликације за Google Play
  • Инкремент — свака нова изградња мора имати Version Code већи од претходне
  • Version Name — верзија у облику текста за корисника, не утиче на механизам ажурирања
  • Подешавање се врши у build.gradle кроз поље versionCode
  • Ограничење — максимална вредност Version Code је 2100000000

Шта је Version Code у Android-у

Version Code — је цео број типа Integer који се додељује свакој изградњи Android апликације. За разлику од Version Name, Version Code се не приказује кориснику и користи га искључиво оперативни систем и Google Play за поређење верзија приликом инсталације ажурирања.

Формат Version Code

Version Code мора бити цео позитиван број у опсегу од 1 до 2100000000. Свака наредна изградња мора имати Version Code строго већи од претходне. Ако је програмер објавио изградњу са Version Code 5, следећа објава може да користи 6, 7 или било који број већи од 5, али не 4 и не 5 поново.

Историјат настанка

Google је увео поделу на Version Code и Version Name са изласком Android SDK-а 2007. године. Version Code је осмишљен као машински идентификатор за аутоматско поређење верзија, док је Version Name — као етикета читљива човеку. Овакво раздвајање омогућава програмеру да именује верзију по жељи, задржавајући строг редослед ажурирања путем бројчаног кода.

ПараметарVersion CodeVersion Name
Тип податакаIntegerString
Приказ корисникуНеДа
Поређење верзијаБројчано поређењеНе користи се
Формат1, 2, 3, 10, 1001.0.0, 2.3.1-rc
Опсег1 — 2100000000Без ограничења

Како ради верзионирање путем Version Code

Механизам поређења Version Code је уграђен у Android оперативни систем и Google Play продавницу. При свакој објави Google Play проверава да је Version Code нове изградње већи од кода инсталиране верзије. Ако услов није испуњен, објава се одбија са грешком.

Процес провере ажурирања

Када уређај контактира Google Play за проверу ажурирања, сервер пореди Version Code инсталиране апликације са максималним доступним у продавници. Ако је код на серверу већи — покреће се преузимање и инсталација ажурирања. Корисник види Version Name који је навео програмер, али одлука о ажурирању доноси се на основу Version Code.

Инкремент Version Code

Програмери примењују различите стратегије инкремента Version Code. Најједноставнија је повећање за 1 при свакој изградњи. За CI/CD протокове често се користе timestamp или број изградње: 2026070301 (година-месец-дан-број). Битно је да код монотоно расте и да се не понавља између различитих изградњи и Google Play трекова.

  • Монотони инкремент — повећање за 1 при сваком commit-у у release грану
  • Timestamp формат — 20260703 за дневне изградње, 2026070301 за више на дан
  • SemVer у бројевима — 100010000 за верзију 1.1.0 (major 1, minor 1, patch 0)
  • Број изградње — коришћење BUILD_NUMBER из CI система (Jenkins, GitHub Actions)

Разлике између Version Code и Version Name

Version Code и Version Name — два независна поља у build.gradle која обављају различите функције. Version Code је унутрашњи идентификатор за систем, Version Name је маркетиншка етикета за корисника. Они се могу мењати независно један од другог.

Version Name за корисника

Version Name — је низ знакова који се приказује у поставкама апликације, у Google Play-у и у дијалозима за ажурирање. Програмер може да наведе било који формат: 1.0.0, 2.3.1-beta, 3.0-rc1. За поређење текстуалних верзија, Version Name се не користи — Google Play се увијек ослања на Version Code.

Сценарији одступања

Могућа је ситуација када Version Code расте, а Version Name остаје исти. На примјер, ако програмер поправља критичну грешку у hotfix изградњи без промене функционалности. Version Name остаје 2.0.0, а Version Code се мења са 5 на 6. Google Play ће исправно обрадити такво ажурирање.

groovy
// Primer: version name se ne menja, code raste
android {
    defaultConfig {
        versionCode 6  // Bilo je 5 — hotfix bez novih funkcija
        versionName "2.0.0"  // Nije se promenilo
    }
}

// Provera verzija u runtime-u
val code = BuildConfig.VERSION_CODE
val name = BuildConfig.VERSION_NAME
println("Kod: $code, Ime: $name")

Подешавање Version Code у build.gradle

Подешавање Version Code се врши у датотеци build.gradle модула апликације. Поље versionCode прихвата цео број и налази се у defaultConfig блоку. За различите flavour изградње могу се поставити сопствене вредности кроз поље versionCode у конфигурацији производа.

Основна конфигурација

kotlin
// 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 омогућавају коришћење различитих Version Code за различите конфигурације: демо верзија, засебна верзија за таблете. Ако се у пројекту користе flavors, коначни Version Code се састоји од базног броја и инкремента специфичног за flavour. Google Play прати сваку комбинацију независно.

Аутоматизација инкремента кроз CI

У CI/CD протокима (GitHub Actions, GitLab CI, Jenkins) Version Code се често генерише аутоматски на основу броја изградње или датума. Ово елиминише људске грешке при ручном ажурирању. Скрипта чита тренутни Version Code из build.gradle, повећава га и враћа га натраг пре почетка изградње.

kotlin
// Automatski inkrement 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
    }
}

Правила Version Code за објављивање у Google Play

Google Play има строга правила за Version Code при објављивању и ажурирању апликација. Кршење ових правила доводи до одбијања изградње или немогућности објављивања ажурирања. Програмер мора да разумије ограничења и стратегије управљања кодом у свим фазама животног циклуса.

Правило монотоног раста

Google Play не дозвољава преношење APK или AAB чији је Version Code мањи или једнак тренутно објављеном. Ово правило делује за сваки трек (production, beta, alpha) независно. Ако је у production пренета изградња са Version Code 10, а у alpha — са кодом 5, alpha трек се може ажурирати на 6, 7, 8 или 9, али production остаје на 10.

Миграција између трекова

При промоцији изградње из alpha у beta, затим у production Version Code мора да расте на свакој фази. Ако alpha верзија има код 10, beta може да користи 11, а production — 12. Не може се поставити у production изградња са кодом 10 ако alpha већ користи 10, чак и ако га production још није видио.

  • Monotonous increment — свака изградња у треку има Version Code већи од претходне у истом треку
  • Cross-track awareness — при промоцији између трекова Version Code се повећава сукцесивно
  • Internal testing — трек за унутрашње тестирање користи иста правила монотоности
  • Multiple APKs — стари формат објављивања захтевао је јединствени Version Code за сваки APK

Грешке при навођењу Version Code

Најчешћа грешка — поклапање Version Code у различитим изградњама пренетим у један трек. Google Play враћа грешку APK_VERSION_CODE_ALREADY_EXISTS. Друга грешка — прекораћивање максималне вредности 2100000000, што доводи до грешке при компилацији. Да бисте избегли сукоба, користите аутоматско генерисање кода у CI систему са повезивањем на број изградње или датум изградње.

Такође, програмери често праве грешку не повећавајући Version Code при hotfix изградњи за алтернативни трек. Ако production има код 15, а alpha трек је остао на 14, при промоцији alpha у production Google Play ће одбити изградњу јер је њен код мањи од тренутног production. Пратите монотоност кода у свим трековима истовремено — за то је згодно користити један датотеку version.properties из које сви трекови читају тренутну вредност.

Често постављана питања

Може ли се објавити ажурирање са Version Code мањим од тренутног?

Не, Google Play не дозвољава преношење изградње са Version Code мањим или једнаким тренутно објављеном у истом треку. Систем проверава код при преношењу и враћа грешку ако је правило монотоног раста прекршено. За алфа и бета трекове важи исти принцип независно.

Који Version Code навести за прву објаву апликације?

За прву објаву можете навести Version Code 1. Google Play не поставља минимални праг, осим позитивног целог броја. Препоручује се да почнете од 1 и повећавате за 1 при свакој наредној изградњи. Ако користите timestamp формат, прва изградња може бити 20260701.

Како је Version Code повезан са Version Name у Google Play-у?

Version Code — је унутрашњи машински идентификатор који систем користи за поређење. Version Name — је корисничка етикета која се приказује у Google Play-у и на уређају. Корисник види Version Name (на пример, 2.0.0), а Google Play користи Version Code за одређивање потребе за ажурирање.

Шта се дешава при прекораћивању максималне вредности Version Code?

Максимална вредност Version Code — 2100000000 (Integer.MAX_VALUE). При прекораћивању, компилатор ће вратити грешку јер је поље типа int. За пројекте са великим бројем изградњи (CI/CD са дневним издањима) препоручује се коришћење timestamp формата или ресетовање бројача са почетком major верзије.

Може ли се Version Code користити за A/B тестирање?

Version Code се не користи директно за A/B тестирање, али посредно утиче на њега. Google Play омогућава конфигурисање фазног пуштања (staged rollout) према проценту корисника за одређену изградњу. Version Code идентификује изградњу, а A/B тестови се конфигуришу кроз Firebase Remote Config или сличне сервисе.

Закључак

  • Version Code — цео број који јединствено идентификује сваку изградњу Android апликације
  • Google Play користи Version Code за одређивање потребе за ажурирање апликације
  • Правило инкремента — свака нова изградња мора имати код строго већи од претходне у истом треку
  • Опсег вредности — од 1 до 2100000000 (Integer.MAX_VALUE)
  • Version Name — корисничка текстуална етикета, не утиче на механизам ажурирања
  • Аутоматизација — CI/CD системи могу генерисати Version Code из броја изградње или timestamp-а
  • Препорука — изаберите стратегију инкремента пре објављивања и држите је се током цијелог животног циклуса

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође