Version Code, Android geliştirmede her yeni uygulama derlemesini benzersiz şekilde tanımlayan pozitif bir tam sayıdır. Google Play ve Android sistemi, bir güncellemenin gerekli olup olmadığını belirlemek için Version Code'u kullanır: yeni derlemenin kodu yüklü olandan büyükse güncelleme süreci başlar. Android Geliştirici Dokümantasyonu'na göre, Version Code kullanıcıya gösterilmez ve yalnızca dahili sürüm numaralandırması için hizmet eder.
Önemli Noktalar
Version Code, Integer türünde bir tam sayıdır ve bir Android uygulamasının her derlemesine atanır. Version Name'in aksine, Version Code kullanıcıya gösterilmez ve yalnızca işletim sistemi ve Google Play tarafından güncellemeleri yüklerken sürümleri karşılaştırmak için kullanılır.
Version Code, 1 ila 2100000000 aralığında pozitif bir tam sayı olmalıdır. Sonraki her derleme, bir öncekinden kesinlikle daha büyük bir Version Code'a sahip olmalıdır. Bir geliştirici Version Code 5 ile bir derleme yayınladıysa, sonraki yayın 6, 7 veya 5'ten büyük herhangi bir sayıyı kullanabilir, ancak 4 veya tekrar 5'i kullanamaz.
Google, 2007'de Android SDK'nın piyasaya sürülmesiyle Version Code ve Version Name ayrımını tanıttı. Version Code, otomatik sürüm karşılaştırması için bir makine tanımlayıcısı olarak tasarlanırken, Version Name insan tarafından okunabilir bir etiket olarak tasarlandı. Bu ayrım, geliştiricinin sürümü dilediği gibi adlandırmasına olanak tanırken, sayısal kod aracılığıyla katı bir güncelleme sırası korumasını sağlar.
| Parametre | Version Code | Version Name |
|---|---|---|
| Veri türü | Integer | String |
| Kullanıcıya gösterim | Hayır | Evet |
| Sürüm karşılaştırma | Sayısal karşılaştırma | Kullanılmaz |
| Biçim | 1, 2, 3, 10, 100 | 1.0.0, 2.3.1-rc |
| Aralık | 1 — 2100000000 | Sınır yok |
Version Code'un karşılaştırma mekanizması, Android işletim sistemine ve Google Play Store'a yerleşiktir. Her yayında, Google Play yeni derlemenin Version Code'unun yüklü sürümün kodundan büyük olup olmadığını kontrol eder. Koşul karşılanmazsa, yayın bir hata ile reddedilir.
Bir cihaz güncellemeleri kontrol etmek için Google Play ile iletişime geçtiğinde, sunucu yüklü uygulamanın Version Code'unu mağazada bulunan maksimum değerle karşılaştırır. Sunucudaki kod daha büyükse, güncellemenin indirilmesi ve yüklenmesi başlar. Kullanıcı geliştirici tarafından belirtilen Version Name'i görür, ancak güncelleme kararı Version Code'a göre verilir.
Geliştiriciler Version Code'u artırmak için farklı stratejiler uygular. En basiti her derlemede 1 artırmaktır. CI/CD boru hatları için genellikle zaman damgası veya derleme numarası kullanılır: 2026070301 (yıl-ay-gün-sayı). Kodun monoton bir şekilde artması ve farklı derlemeler ile Google Play kanalları arasında tekrarlanmaması önemlidir.
Version Code ve Version Name, build.gradle'da farklı işlevleri yerine getiren iki bağımsız alandır. Version Code sistem için dahili bir tanımlayıcıdır, Version Name kullanıcı için bir pazarlama etiketidir. Birbirlerinden bağımsız olarak değişebilirler.
Version Name, uygulama ayarlarında, Google Play'de ve güncelleme iletişim kutularında görüntülenen bir dizedir. Geliştirici herhangi bir biçim belirtebilir: 1.0.0, 2.3.1-beta, 3.0-rc1. Version Name, metin sürümlerini karşılaştırmak için kullanılmaz — Google Play her zaman Version Code'a dayanır.
Version Code'un artarken Version Name'in aynı kaldığı bir durum mümkündür. Örneğin, bir geliştirici işlevselliği değiştirmeden bir hata düzeltme derlemesinde kritik bir hatayı düzeltirse. Version Name 2.0.0 olarak kalırken, Version Code 5'ten 6'ya değişir. Google Play bu tür bir güncellemeyi doğru şekilde işleyecektir.
// Örnek: version name değişmez, kod artar
android {
defaultConfig {
versionCode 6 // 5'ti — yeni özellik olmadan hata düzeltme
versionName "2.0.0" // Değişmedi
}
}
// Çalışma zamanında sürüm kontrolü
val code = BuildConfig.VERSION_CODE
val name = BuildConfig.VERSION_NAME
println("Code: $code, Name: $name")
Version Code yapılandırması uygulama modülünün build.gradle dosyasında yapılır. versionCode alanı bir tam sayı kabul eder ve defaultConfig bloğunun bir parçasıdır. Farklı flavor derlemeleri için, ürün yapılandırmasında versionCode alanı aracılığıyla özel değerler ayarlanabilir.
// 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, farklı yapılandırmalar için farklı Version Code'ların kullanılmasına olanak tanır: demo sürümü, tabletler için ayrı sürüm. Projede flavor kullanılıyorsa, nihai Version Code temel sayı ve flavore özgü artıştan oluşur. Google Play her kombinasyonu bağımsız olarak izler.
CI/CD boru hatlarında (GitHub Actions, GitLab CI, Jenkins), Version Code genellikle derleme numarasına veya tarihe göre otomatik olarak oluşturulur. Bu, manuel güncellemeler sırasında insan hatasını ortadan kaldırır. Betik, build.gradle'dan geçerli Version Code'u okur, artırır ve derlemeyi başlatmadan önce geri yazar.
// Version Code'un otomatik artırı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'in uygulama yayınlama ve güncelleme sırasında Version Code için katı kuralları vardır. Bu kuralların ihlali, derlemenin reddedilmesine veya bir güncelleme yayınlayamama durumuna yol açar. Geliştiricinin, yaşam döngüsünün tüm aşamalarındaki sınırlamaları ve kod yönetimi stratejilerini anlaması gerekir.
Google Play, Version Code'u şu anda yayınlanmış olandan küçük veya eşit olan bir APK veya AAB'nin yüklenmesine izin vermez. Bu kural her kanal (production, beta, alpha) için bağımsız olarak geçerlidir. Production'a Version Code 10 ile bir derleme yüklendiyse ve alpha'da kod 5 olan bir derleme varsa, alpha kanalı 6, 7, 8 veya 9'a güncellenebilir, ancak production 10'da kalır.
Bir derlemeyi alpha'dan beta'ya ve ardından production'a yükseltirken, Version Code her aşamada artmalıdır. Alpha sürümünde kod 10 ise, beta 11 ve production 12 kullanabilir. Alpha zaten 10'u kullanıyorsa, production henüz görmemiş olsa bile, kod 10 olan bir derlemeyi production'a dağıtamazsınız.
En yaygın hata, aynı kanala yüklenen farklı derlemelerde Version Code'un eşleşmesidir. Google Play, APK_VERSION_CODE_ALREADY_EXISTS hatasını döndürür. Diğer bir hata, maksimum değer olan 2100000000'un aşılmasıdır ve bu, derleme hatasına neden olur. Çakışmaları önlemek için, derleme numarasına veya derleme tarihine bağlı otomatik kod oluşturmayı CI sisteminizde kullanın.
Geliştiriciler ayrıca alternatif bir kanal için hata düzeltme sürümü oluştururken Version Code'u artırmama hatasını sıkça yaparlar. Production'da kod 15 ise ve alpha kanalı 14'te kaldıysa, alpha'yı production'a yükseltirken Google Play, kodu mevcut production kodundan küçük olduğu için derlemeyi reddedecektir. Kodun monotonluğunu tüm kanallarda aynı anda izleyin — bunun için tüm kanalların geçerli değeri okuduğu tek bir version.properties dosyası kullanmak uygundur.
Sıkça Sorulan Sorular
Hayır, Google Play aynı kanalda mevcut yayınlanmış olandan daha küçük veya eşit Version Code'a sahip bir derlemenin yüklenmesine izin vermez. Sistem, yükleme sırasında kodu kontrol eder ve monoton artırma kuralı ihlal edilirse bir hata döndürür. Alfa ve beta kanalları için de aynı prensip bağımsız olarak geçerlidir.
İlk yayın için Version Code 1 belirtebilirsiniz. Google Play, pozitif bir tam sayı dışında minimum bir eşik belirlemez. 1 ile başlamanız ve sonraki her derlemede 1 artırmanız önerilir. Zaman damgası biçimi kullanıyorsanız, ilk derleme 20260701 olabilir.
Version Code, sistem tarafından karşılaştırma için kullanılan dahili bir makine tanımlayıcısıdır. Version Name, Google Play'de ve cihazda görüntülenen kullanıcı odaklı bir etikettir. Kullanıcı Version Name'i (örneğin, 2.0.0) görürken, Google Play bir güncellemenin gerekli olup olmadığını belirlemek için Version Code'u kullanır.
Version Code maksimum değeri 2100000000'dir (Integer.MAX_VALUE). Aşılırsa, alan int türünde olduğu için derleyici hata döndürür. Çok sayıda derlemesi olan projeler için (günlük sürümlerle CI/CD), zaman damgası biçimi kullanmanız veya ana sürümün başında sayacı sıfırlamanız önerilir.
Version Code doğrudan A/B testi için kullanılmaz, ancak dolaylı olarak etkiler. Google Play, belirli bir derleme için kullanıcı yüzdesine göre aşamalı dağıtım (staged rollout) yapılandırmasına izin verir. Version Code derlemeyi tanımlarken, A/B testleri Firebase Remote Config veya benzer hizmetler aracılığıyla yapılandırılır.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun