Version Code — bu Android inkişafında müsbət tam ədəddir və tətbiqin hər yeni qurulmasını unikal şəkildə identifikasiya edir. Google Play və Android sistemi yeniləmə ehtiyacını müyyənləşdirmək üçün Version Code-dan istifadə edir: əgər yeni qurulmanın kodu qurulmuş versiyadan böyükdürsə, yeniləmə prosesi başladılır. Android Developer Documentation-a görə, Version Code istifadəçiyə göstərilmir və yalnız daxili versiya nömrələməsi üçün xidmət edir.
Başlıca
Version Code — bu Integer tipli tam ədəddir və Android tətbiqinin hər qurulmasına təyin edilir. Version Name-dən fərqli olaraq, Version Code istifadəçiyə göstərilmir və yalnız əməliyyat sistemi və Google Play tərəfindən yeniləmələrin quraşdırılması zamanı versiyaları müqayisə etmək üçün istifadə olunur.
Version Code 1-dən 2100000000-dək diapazonda müsbət tam ədəd olmalıdır. Hər sonrakı qurulma əvvəlkindən ciddi şəkildə böyük Version Code-a malik olmalıdır. Proqramçı Version Code 5 olan qurulma buraxmışsa, növbəti nəşr 6, 7 və ya 5-dən böyük istənilən ədədi istifadə edə bilər, lakin 4 və ya yenə 5 deyil.
Google, 2007-ci ildə Android SDK-nın buraxılması ilə Version Code və Version Name bölgüsünü tətbiq etdi. Version Code versiyaların avtomatik müqayisəsi üçün maşın identifikatoru kimi, Version Name isə insan üçün oxuna bilən etiket kimi hazırlanmışdır. Bu bölgü proqramçıya versiyanı istənildiyi kimi adlandırmağa imkan verir, eyni zamanda rəqəmsal kod vasitəsilə ciddi yeniləmə ardıcıllığını qoruyur.
| Parametr | Version Code | Version Name |
|---|---|---|
| Məlumat tipi | Integer | String |
| İstifadəçiyə göstərilmə | Xeyr | Bəli |
| Versiyaların müqayisəsi | Rəqəmsal müqayisə | İstifadə olunmur |
| Format | 1, 2, 3, 10, 100 | 1.0.0, 2.3.1-rc |
| Diapazon | 1 — 2100000000 | Məhdudiyyətsiz |
Müqayisə mexanizmi Version Code Android əməliyyat sisteminə və Google Play mağazasına quraşdırılmışdır. Hər nəşrdə Google Play yeni qurulmanın Version Code-unun quraşdırılmış versiyanın kodundan böyük olduğunu yoxlayır. Şərt yerinə yetirilməzsə, nəşr xəta ilə rədd edilir.
Cihaz yeniləmələri yoxlamaq üçün Google Play-ə müraciət etdikdə, server quraşdırılmış tətbiqin Version Code-unu mağazada məvcud olan maksimum ilə müqayisə edir. Serverdəki kod böyükdürsə — yeniləmənin endirilməsi və quraşdırılması başladılır. İstifadəçi proqramçı tərəfindən göstərilən Version Name-i görür, lakin yeniləmə qərarı Version Code əsasında qəbul edilir.
Proqramçılar Version Code artımı üçün müxtəlif strategiyalar tətbiq edirlər. Ən sadəsi — hər qurulmada 1 vahid artırma. CI/CD boru kəmərləri üçün tez-tez timestamp və ya qurulma nömrəsi istifadə olunur: 2026070301 (il-ay-gün-nömrə). Kodun monoton şəkildə artması və müxtəlif qurulmalar və Google Play trekləri arasında təkrarlanmaması vacibdir.
Version Code və Version Name — build.gradle faylında müxtəlif funksiyaları yerinə yetirən iki müstəqil sahədir. Version Code sistem üçün daxili identifikator, Version Name istifadəçi üçün marketinq etiketidir. Onlar bir-birindən asılı olmayaraq dəyişə bilərlər.
Version Name — bu tətbiq parametrlərində, Google Play-də və yeniləmə dialoqlarında göstərilən sətirdir. Proqramçı istənilən formatı təyin edə bilər: 1.0.0, 2.3.1-beta, 3.0-rc1. Mətn versiyalarını müqayisə etmək üçün Version Name istifadə olunmur — Google Play həmişə Version Code-a əsaslanır.
Version Code-un artdığı, lakin Version Name-in dəyişməz qaldığı bir vəziyyət mümkündür. Məsələn, proqramçı funksionallığı dəyişmədən hotfix qurulmasında kritik bir səhvi düzəldirsə. Version Name 2.0.0 olaraq qalır, Version Code isə 5-dən 6-ya dəyişir. Google Play belə bir yeniləməni düzgün emal edir.
// Nümunə: version name dəyişmir, code artır
android {
defaultConfig {
versionCode 6 // 5 idi — yeni funksiyasız hotfix
versionName "2.0.0" // Dəyişmədi
}
}
// Versiyaların runtime-da yoxlanılması
val code = BuildConfig.VERSION_CODE
val name = BuildConfig.VERSION_NAME
println("Kod: $code, Ad: $name")
Version Code konfiqurasiyası tətbiq modulunun build.gradle faylında aparılır. versionCode sahəsi tam ədəd qəbul edir və defaultConfig blokunda yerləşir. Müxtəlif flavour qurulmaları üçün məhsul konfiqurasiyasında versionCode sahəsi vasitəsilə öz dəyərlər təyin edilə bilər.
// 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 müxtəlif konfiqurasiyalar üçün müxtəlif Version Code istifadə etməyə imkan verir: demo versiya, planşetlər üçün ayrı versiya. Layihədə flavors istifadə olunursa, yekun Version Code baza ədədi və flavour-spesifik artımdan ibarətdir. Google Play hər kombinasiyanı müstəqil şəkildə izləyir.
CI/CD boru kəmərlərində (GitHub Actions, GitLab CI, Jenkins) Version Code tez-tez qurulma nömrəsi və ya tarix əsasında avtomatik yaradılır. Bu, əl ilə yeniləmə zamanı insan səhvlərini aradan qaldırır. Skript build.gradle-dən cari Version Code-u oxuyur, artırır və qurulma başlamazdan əvvəl geri yazır.
// Version Code-un avtomatik artımı
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 tətbiqlərin nəşri və yenilənməsi zamanı Version Code üçün ciddi qaydalara malikdir. Bu qaydaların pozulması qurulmanın rədd edilməsinə və ya yeniləmənin buraxıla bilməməsinə səbəb olur. Proqramçı həyat dövrünün bütün mərhələlərində məhdudiyyətləri və kod idarəetmə strategiyalarını başa düşməlidir.
Google Play Version Code-u cari nəşr olunmuşdan kiçik və ya bərabər olan APK və ya AAB yükləməyə icazə vermir. Bu qayda hər bir trek (production, beta, alpha) üçün müstəqil işləyir. Production trekinə Version Code 10 olan qurulma yüklənmişsə, alpha trekində isə kod 5-dirsə, alpha treki 6, 7, 8 və ya 9-a yenilənə bilər, lakin production 10 olaraq qalır.
Qurulmanın alpha-dan beta-ya, sonra isə production-a yüksəldilməsi zamanı Version Code hər mərhələdə artmalıdır. Alpha versiyasının kodu 10-dursa, beta 11-i, production isə 12-ni istifadə edə bilər. Production hələ görməmiş olsa belə, alpha artıq 10 istifadə edirsə, production-a kod 10 olan qurulmanı yerləşdirmək olmaz.
Ən geniş yayılmış səhv — bir trekin müxtəlif qurulmalarında Version Code-un üst-üstə düşməsidi. Google Play APK_VERSION_CODE_ALREADY_EXISTS xətasını qaytarır. Digər səhv — maksimum dəyər 2100000000-nın aşılmasıdır ki, bu da tərtib zamanı xətaya səbəb olur. Münaqişələrin qarşısını almaq üçün CI sistemində kodun avtomatik yaradılmasını qurulma nömrəsi və ya qurulma tarixi ilə əlaqələndirərək istifadə edin.
Proqramçılar tez-tez alternativ trek üçün hotfix qurulmasında Version Code-u artırmamaq səhvini edirlər. Production-un kodu 15-dirsə, alpha treki isə 14-də qalıbsa, alpha-nın production-a yüksəldilməsi zamanı Google Play qurulmanı rədd edəcək, çünki onun kodu cari production-dan kiçikdir. Bütün treklərdə eyni vaxtda kodun monotonluğunu izləyin — bunun üçün bütün treklərin cari dəyəri oxuduğu vahid version.properties faylından istifadə etmək rahatdır.
Tez-tez verilən suallar
Xeyr, Google Play eyni trekdə cari nəşr olunmuşdan kiçik və ya bərabər Version Code olan qurulmanı yükləməyə icazə vermir. Sistem yükləmə zamanı kodu yoxlayır və monoton artım qaydası pozulduqda xəta qaytarır. Alfa və beta trekləri üçün də eyni prinsip müstəqil şəkildə tətbiq olunur.
İlk nəşr üçün Version Code 1 göstərilə bilər. Google Play müsbət tam ədəddən başqa heç bir minimal hədd təyin etmir. 1-dən başlamaq və hər sonrakı qurulmada 1 vahid artırmaq tövsiyə olunur. Timestamp formatından istifadə edirsinizsə, ilk qurulma 20260701 ola bilər.
Version Code — sistem tərəfindən müqayisə üçün istifadə olunan daxili maşın identifikatorudur. Version Name — Google Play və cihazda göstərilən istifadəçi etiketidir. İstifadəçi Version Name-i (məsələn, 2.0.0) görür, Google Play isə yeniləmə ehtiyacını müyyənləşdirmək üçün Version Code-dan istifadə edir.
Maksimum Version Code dəyəri — 2100000000 (Integer.MAX_VALUE). Aşıldıqda, kompilyator xəta qaytarır, çünki sahə int tipinə malikdir. Çox sayda qurulması olan layihələr (günlük buraxılışlarla CI/CD) üçün timestamp formatından istifadə etmək və ya major versiyanın başlanğıcı ilə sayıcını sıfırlamaq tövsiyə olunur.
Version Code birbaşa A/B testi üçün istifadə olunmur, lakin dolayı yolla təsir edir. Google Play müəyyən qurulma üçün istifadəçilərin faizinə görə mərhələli yayımlamanı (staged rollout) konfiqurasiya etməyə imkan verir. Version Code qurulmanı identifikasiya edir, A/B testləri isə Firebase Remote Config və ya oxşar xidmətlər vasitəsilə konfiqurasiya edilir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun